PHP 删除数组中的某个元素
大部分编程语言都把数组当成基础的数据结构。我们可以很方便地将相同类型的数据放在一起,并实现快速的查找和插入。PHP 数组与一些静态语言的数组不同,它是数组和 map 的一个结合体,即 PHP 数组可以使用数字作为下标,也可以使用字符,甚至是对象作为下标存储对应的数据。那么,如何删除数组中的某个元素呢?接下来,我们将介绍几种方法,删除 PHP 数组的某些元素。
删除单个元素
如果你仅仅想删除数组中的一个元素,可以使用 unset()
方法或者 array_splice()
方法。 如果你只知道值,但是不知道数组的key,那就需要先获取到数组的key之后,才能够进行删除。可以使用 array_search()
方法。需要注意的是, array_search
只会返回搜索的第一个结果,如果数组中某个值出现的次数多于一次话,就需要额外处理了。
unset
示例代码:
$array = [0 => 'a', 1 => 'b', 2 => 'c'];
unset($array[1]);
// Output:
[
[0] => a
[2] => c
]
需要注意的是,需要 unset()
方法是不会改变数组内部索引的。如果需要重新索引数组,则需要使用 array_values()
获取重新索引后的数组。重新索引后,数组的索引将从数字0开始。
array_splice
也可以使用 array_splice()
方法,该方法可以自动重新索引。但是只有数字索引才会重新索引,关联 key 是不会改变的。array_splice()
将数组的偏移量作为函数的第二个参数。具体代码如下:
$array = [0 => "a", 1 => "b", 2 => "c"];
array_splice($array, 1, 1);
// Output:
[
[0] => a
[1] => c
]
需要注意的是,使用 array_splice
和 unset
都是引用wfuxr,所以不需要接收函数的返回值。
删除数组中的多个数组
如果你想删除数组中的多个元素,而又不想多次使用 unset
或 array_splice
的话,就可以使用 array_diff
和 array_diff_key
这两个函数。使用这两个函数时,需要考虑是通过值还是通过 key 来删除。
array_diff
通过值来删除数组的元素,可以使用 array_diff
, 跟 unset
一样,这个函数也不会改变数组的索引。
代码如下:
$array = [0 => "a", 1 => "b", 2 => "c", 3 => "c"];
$array = \array_diff($array, ["a", "c"]);
// Output:
[
[1] => b
]
array_diff_key
如果想通过数组的索引来删除元素,将可以使用 array_diff_key
方法。需要注意,索引是函数的第二个参数。使用该函数,也不会重新索引数组的。
示例代码如下:
$array = [0 => "a", 1 => "b", 2 => "c"];
$array = \array_diff_key($array, [0 => "xy", "2" => "xy"]);
// Output:
[
[1] => b
]