php根据键值去除数组中的某个元素_php数组删除元素 删除指定键值元素

fc6e41f33e6bbd461cea80d865020519.png

这个属于PHP操作数组的基本应用,但是小应用有大用途,而且一不留心操作错了,还可能给你造出意想不到的bug。

最近写程序的时候要拼装一个检索数组,要求每个栏目的检索条件还不一样,于是乎将获取到的检索条件数组把不属于该栏目的剔除,开始想都没想直接用了unset,测试了一下,没问题;但是多测试几个后就出现问题了,仔细检查后发现unset虽然删掉了指定键值的数组元素,但是这个函数返回的结果原来的兼职序列不变,而我要的是自动更新。

demo:

$arr=['aaaa','bbbb','cccc','dddd'];

unset($arr[1]);

输出结果:

Array (

[0] => "aaaa"

[2] => "cccc"

[3] => "dddd"

)

如果你想让数组重新排列,按照索引连续的排序,可以使用array_values函数。

array_values($arr);

这样你就会等到一个连续索引的数组了:

Array (

[0] => "aaaa"

[1] => "cccc"

[2] => "dddd"

)

当然也可以使用array_splice函数(删除一个元素,不保持索引),一步达成,示例如下:

$arr=['aaaa','bbbb','cccc','dddd'];

array_splice($arr,1,1);

上面示例代码中,array_splice第二个参数是必需的,是要删除元素的开始位置, 0表示第一个元素, 如果该值设置为正数,则从数组中该值指定的偏移量开始移除。如果该值设置为负数,则从数组末端倒数该值指定的偏移量开始移除。 -2 意味着从数组的倒数第二个元素开始。

结果:

Array (

[0] => "aaaa"

[1] => "cccc"

[2] => "dddd"

)

array_diff()函数:按值删除多个元素,保持索引,与 unset 类似,array_diff 也将保持索引。

$arr = ['aaaa','bbbb','cccc','dddd'];

$res = arrar_diff($arr,['aaaa','cccc']);

var_dump($arr);

输出结果:

Array (

[1] => "bbbb"

[3] => "dddd"

)

array_diff_key() 函数用于比较两个(或更多个)数组的键名 ,并返回差集。 该函数比较两个(或更多个)数组的键名,并返回一个差集数组,该数组包括了所有在被比较的数组(array1)中,但是不在任何其他参数数组(array2 或 array3 等等)中的键名。

$a1=array("a"=>"red","b"=>"green","c"=>"blue");

$a2=array("a"=>"red","c"=>"blue","d"=>"pink");

$result=array_diff_key($a1,$a2);

print_r($result);

结果:Array ( [b] => green )

根据自己实际需要进行选择就是了。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值