删除数组元素有不同的方法,可以根据具体的需要选择不同的方法。
1.unset() 方法
注意:当您使用unset()方法时,数组Key值不会更改。 如果要重新编号键,您可以在unset()之后使用array_values(),它将所有键转换为从0开始的数值枚举键。
<?php $array = array(0 => "a", 1 => "b", 2 => "c"); unset($array[1]); //↑ 需要删除的键 ?>
输出
Array ( [0] => a [2] => c )
2.array_splice() 方法
注意:如果使用array_splice(),那么键将被自动重新建立索引,但是关联键不会改变,而是将array_values()转换成数字键。
<?php $array = array(0 => "a", 1 => "b", 2 => "c"); array_splice($array, 1, 1); //↑ 需要删除的键 ?>
输出
Array ( [0] => a [1] => c )
array_splice()与unset()相同,通过引用获取数组,这意味着执行代码后将直接改变原数组数据。
删除数组中多个元素
如果要删除多个数组元素,又不想多次调用unset()或array_splice(),则可以使用函数array_diff()或array_diff_key(),具体取决于你是否知道想删除元素的值或键 。
1.array_diff() 方法
如果你知道要删除的数组元素的值,那么可以使用array_diff()。 与unset()方法一样,它不会重新索引数组的键。
<?php $array = array(0 => "a", 1 => "b", 2 => "c"); $array = array_diff($array, ["a", "c"]); //└────────┘→ 想删除的值 ?>
输出
Array ( [1] => b )
2.array_diff_key() 方法
如果您知道要删除的元素的键,则使用array_diff_key()。 在这里,您必须确保将Key作为第二个参数中的键传递,而不是值。 否则你必须用array_flip()来翻转数组。 而且这里的键也不会重新索引。
<?php $array = array(0 => "a", 1 => "b", 2 => "c"); $array = array_diff_key($array, [0 => "xy", "2" => "xy"]); //↑ ↑ 想删除的数组的键 ?>
输出
Array ( [1] => b )
另外,如果要使用unset()或array_splice()删除具有相同值的多个元素,可以使用array_keys()获取特定值的所有键,然后删除所有元素。