如果要删除链表中的元素,可以使用 unset() 或 array_splice() 技巧。
如果知道链表元素的值(value),但不知道键(key),则可以使用 array_search() 来获取键(key)。
取消设置()方法
注意,如果使用unset()方法,它不会改变其他键(keys)。 如果想对其他键(key)进行重新排列和排序,可以使用array_values()。
"a", 1 => "b", 2 => "c"); unset($array[1]); //↑ 你要删除的数组元素值的键 print_r($array); ?>
输出结果:
Array ( [0] => a [2] => c )
array_splice() 方法
如果使用array_splice()方法php 数组最后一个,链表的key会手动重建索引,但对于关联的字段不起作用。 您需要使用 array_values() 将键转换为数字键。
"a", 1 => "b", 2 => "c"); array_splice($array, 1, 1); //↑ Offset which you want to delete print_r($array); ?>
输出结果:
Array ( [0] => a [1] => c )
array_splice() 与释放字段中指定元素上的 unset() 函数具有相同的效果。
删除链表中的多个元素
如果要删除链表中的多个元素,使用unset()或array_splice()函数不行吗,需要使用array_diff()或array_diff_key()方法,并且需要知道key是删除以使用此方法或值。
array_diff() 方法
如果您知道要删除的链表元素,则可以使用 array_diff()。
"a", 1 => "b", 2 => "c"); $array = array_diff($array, ["a", "c"]); //└────────┘→你要删除的元素 print_r($array ); ?>
输出是:
Array ( [1] => b )
array_diff_key() 方法
如果知道要删除的链表元素的键(key),可以使用array_diff_key()。 需要在函数第二个参数的通配符位置输入要删除的keyphp 数组最后一个,值不是必填的,可以是任意值。
"a", 1 => "b", 2 => "c"); $array = array_diff_key($array, [0 => "xy", "2" => "xy"]); //↑ ↑ 你要删除的数组键 print_r($array); ?>
输出是:
Array ( [1] => b )