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