php从一个数组中删除一个数组,PHP:从数组中删除一个元素

有没有简单的方法使用PHP从数组中删除元素,使foreach ($array)不再包含该元素?

我认为把它设置为null会做到这一点,但显然这是行不通的。

有不同的方法来删除一个数组元素,其中一些比其他的更有用的一些特定的任务。

如果你只想删除一个数组元素,你可以使用unset()或者array_splice()。

此外,如果你有这个值,不知道删除元素的关键,你可以使用array_search()来获得密钥。

method

请注意,使用unset()时,数组键不会更改/

reindex。如果你想重新索引键,你可以在array_values()之后使用unset(),这将把所有的键都转换成从0开始的数字枚举键。

码<?php

$array = array(0 => "a", 1 => "b", 2 => "c");

unset($array[1]);

//a Key which you want to delete

?>

产量Array (

[0] => a

[2] => c

)

method

如果您使用array_splice()键将被自动重新编制索引,但相关键不会改变对array_values()将所有键转换为数字键。

另外array_splice()需要偏移量,而不是键!作为第二个参数。

码<?php

$array = array(0 => "a", 1 => "b", 2 => "c");

array_splice($array, 1, 1);

//a Offset which you want to delete

?>

产量Array (

[0] => a

[1] => c

)

array_splice()和unset()一样,通过引用来取数组,这意味着你不想把这些函数的返回值赋给数组。

Delete multiple array elements

如果要删除多个数组元素,而不想多次调用unset()或array_splice(),则可以使用函数array_diff()或array_diff_key(),具体取决于您是否知道要删除的元素的值或键。

method

如果您知道要删除的数组元素的值,则可以使用array_diff()。和以前一样,unset()不会改变/重新索引数组的键。

码<?php

$array = array(0 => "a", 1 => "b", 2 => "c");

$array = array_diff($array, ["a", "c"]);

//aaaaaaaaaaa Array values which you want to delete

?>

产量Array (

[1] => b

)

method

如果您知道要删除的元素的键,那么您要使用array_diff_key()。在这里,你必须确保你把键作为第二个参数的键而不是值。否则,你必须用array_flip()来翻转数组。而且这里的钥匙不会改变/

reindex。

码<?php

$array = array(0 => "a", 1 => "b", 2 => "c");

$array = array_diff_key($array, [0 => "xy", "2" => "xy"]);

//a a Array keys which you want to delete

?>

产量Array (

[1] => b

)

另外,如果要使用unset()或array_splice()删除具有相同值的多个元素,则可以使用array_keys()获取特定值的所有键,然后删除所有元素。

应该注意的是,unset()将保持索引不变,这是你使用字符串索引(数组作为散列表)时所期望的,但是在处理整数索引数组时可能会相当令人惊讶:$array = array(0, 1, 2, 3);

unset($array[2]);

var_dump($array);

/* array(3) {

[0]=>

int(0)

[1]=>

int(1)

[3]=>

int(3)

} */

$array = array(0, 1, 2, 3);

array_splice($array, 2, 1);

var_dump($array);

/* array(3) {

[0]=>

int(0)

[1]=>

int(1)

[2]=>

int(3)

} */

所以array_splice()可以使用,如果你想规范你的整数密钥。另一个选择是在array_values()之后使用unset():$array = array(0, 1, 2, 3);

unset($array[2]);

$array = array_values($array);

var_dump($array);

/* array(3) {

[0]=>

int(0)

[1]=>

int(1)

[2]=>

int(3)

} */

未经作者同意,本文严禁转载,违者必究!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值