PHP 删除数组中的某个元素

PHP 删除数组中的某个元素

大部分编程语言都把数组当成基础的数据结构。我们可以很方便地将相同类型的数据放在一起,并实现快速的查找和插入。PHP 数组与一些静态语言的数组不同,它是数组和 map 的一个结合体,即 PHP 数组可以使用数字作为下标,也可以使用字符,甚至是对象作为下标存储对应的数据。那么,如何删除数组中的某个元素呢?接下来,我们将介绍几种方法,删除 PHP 数组的某些元素。
author
Wonderhows August 23, 2021

大部分编程语言都把数组当成基础的数据结构。我们可以很方便地将相同类型的数据放在一起,并实现快速的查找和插入。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_spliceunset 都是引用wfuxr,所以不需要接收函数的返回值。

删除数组中的多个数组

如果你想删除数组中的多个元素,而又不想多次使用 unsetarray_splice 的话,就可以使用 array_diffarray_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
]
comments powered by Disqus