位置:首页 > PHP > PHP功能函数 >

php数组删除元素 删除指定键值元素

字号+ 作者:micloud 来源:www.seoalphas.com 2020-01-03 09:21 浏览量:4127

QQ截图20200103092239.jpg

这个属于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 )


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

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • php获取文章中图片img标签方法

    php获取文章中图片img标签方法

    浏览次数:4967

  • php 获取手机信息

    php 获取手机信息

    浏览次数:2916

  • php序列化与反序列化函数

    php序列化与反序列化函数

    浏览次数:2510

  • 实用PHP数组函数相关总结

    实用PHP数组函数相关总结

    浏览次数:2444

网友点评
评论区域