有没有一种简单的方法可以使用PHP从数组中删除元素,这样foreach($array)就不再包含该元素了
我原以为将它设置为null就可以了,但显然不起作用
删除数组元素有不同的方法,其中一些方法对于某些特定任务比其他方法更有用
删除单个数组元素
如果只想删除一个数组元素,可以使用unset()或\array\u splice()
如果知道值但不知道删除元素的键,则可以使用\array\u search()获取键。这仅在元素不出现多次时有效,因为\array\u search仅返回第一次命中
unset()
请注意,使用unset()时,数组键不会更改。如果要重新索引键,可以在unset()之后使用\array\u values(),将所有键转换为从0开始的数字枚举键
代码:
$array=[0=>;a";,1=>;b";,2=>;c";];
未设置($array[1]);
// ↑ 要删除的密钥
输出:
[
[0]=>;a
[2] =>;c
]
\array\u splice()方法
如果使用\array\u splice()键将自动重新编制索引,但关联键不会更改-与将所有键转换为数字键的\array\u values()相反
\array\u splice()需要偏移量,而不是键,作为第二个参数
代码:
$array=[0=>;a";,1=>;b";,2=>;c";];
\阵列拼接($array,1,1);
// ↑ 要删除的偏移量
输出:
[
[0]=>;a
[1] =>;c
]
array\u splice(),与unset()相同,通过引用获取数组。您不会将这些函数的返回值赋回数组
删除多个数组元素
如果要删除多个数组元素并且不想多次调用unset()或\array\u splice(),则可以使用函数\array\u diff()或\array\u diff\u key(),具体取决于您是否知道要删除的元素的值或键
\array\u diff()方法
如果知道要删除的数组元素的值,则可以使用\array\u diff()。与前面的unset()一样,它不会更改数组的键
代码:
$array=[0=>;a";,1=>;b";,2=>;c";,3=>;c";];
$array=\array差异($array,[";a";,";c";]);
// └────────┘
//要删除的数组值
输出:
[
[1] =>;b
]
\array\u diff\u key()方法
如果知道要删除的元素的键,则需要使用\array\u diff\u key()。必须确保将键作为第二个参数中的键传递,而不是作为值传递。钥匙不会重新编制索引
代码:
$array=[0=>;a";,1=>;b";,2=>;c";];
$array=\array差异键($array,[0=>;xy";,“2";=>;xy";]);
// ↑ ↑
//要删除的数组键
输出:
[
[1] =>;b
]
如果要使用unset()或\array\u splice()删除具有相同值的多个元素,可以使用\array\u keys()获取特定值的所有键,然后删除所有元素