引言
PHP数组操作,之前我们讲过如何根据值对多维数组进行排序。今天,我们将讨论如何根据值删除数组元素。
学习时间
假设有一个一维数组,一个简单的数字数组。为了简化问题,我们假设数组元素中没有重复。
$ messages=[3124011599,3,];
那么如何删除元素“401”呢?
最简单的方法是使用array_search和unset函数。代码如下:
if (($key=array_search($del_val,$messages))!==false){ 0
unset($ messages[$ key]);
}
函数array_search是在数组中搜索给定的值,如果成功则返回相应的键名.函数。如果没有找到匹配的值,则返回false。
我们使用变量$key来获取array_search的返回值。如果不是假的,它就存在。然后调用unset函数将其删除。
需要注意的是,比较运算符必须使用"!=="这并不都等于符号,否则如果返回数组索引0,也会被判断为null,即0==false。
其他方法
用另一种方式处理。我们尝试使用array_diff函数来计算差集,我们可以删除任意数量元素的值:
array_diff([312,401,15,401,3],[401])
但是,这个函数的副作用是返回值是一个新数组,索引键值保持不变。同时,原始数组的内容保持不变。
深入使用
上面给出的前提很简单,就是数组中有不同的数据。实际上,很难保证这一点。除非是模型返回的主键或具有唯一约束的字段,否则不能保证数据集中没有相同的值。
手册中也说了,应该使用array_keys函数,根据值去除数据中所有对应的元素。
foreach (array_keys($messages,401,true)作为$ key){ 0
unset($ messages[$ key]);
}
array_keys函数的第三个参数是可选的,用于标记过滤模式是否严格。
写在最后
本文演示了如何通过不同的方法根据值从数组中移除相应的元素。
快乐编码:_)