网站首页 > 精选教程 正文
引言
PHP 数组操作,之前我们讲了如何根据值,进行多维数组的排序。今天说一说,如何根据值,进行数组元素的删除。
学习时间
假设有一个一维数组,单纯的数字数组。为了简化问题,我们假设数组元素没有重复项。
$messages = [312, 401, 1599, 3, ...];
那么该如何移除 “401”这个元素呢?
最简单的办法,应该使用 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( [312, 401, 15, 401, 3], [401] )
但是这个函数会有副作用,就是返回值是新的数组,保持索引键值不变。同时,原数组内容保持不变。
深入使用
上面我们给定的前提非常简单,就是加入数组内都是不同的数据。实际应用中,很难保证这一点。除非是模型返回的主键,或者做了 unique 约束的字段,否则不能保证数据集内没有相同的值。
手册上也说了,这样根据值移除数据内所有对应元素的,应该使用 array_keys 函数。
foreach (array_keys($messages, 401, true) as $key) {
unset($messages[$key]);
}
函数 array_keys 第三个参数为可选项,用于标记是否严格筛选模式。
写在最后
本文通过不同的方法,演示了如何从数组中,根据值移除相应元素的方法。
Happy coding :_)
我是 @程序员小助手 ,持续分享编程知识,欢迎关注。
- 上一篇: PHP8中删除数组中的重复元素-PHP8知识详解
- 下一篇: 如何删除有序顺序表中所有重复的元素
猜你喜欢
- 2025-05-23 C# 动态数组(ArrayList)
- 2025-05-23 C# 7.0中的Discard 变量:简化代码的利器
- 2025-05-23 JS数组过滤元素的方法
- 2025-05-23 JavaScript去除数组重复元素的几种方法
- 2025-05-23 【HarmonyOS Next之旅】ArkTS语法(一)
- 2025-05-23 C/C++编程笔记:帮你整理了"数组"的知识点!赶紧收藏
- 2025-05-23 Java 基础(四)集合源码解析 List
- 2025-05-23 Java中数组的声明和初始化方法
- 2025-05-23 数组、链表、队列和栈,四大基础数据结构详解
- 2025-05-23 最快清除数组空值?分享 1 段优质 JS 代码片段!
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- nginx反向代理 (57)
- nginx日志 (56)
- nginx限制ip访问 (62)
- mac安装nginx (55)
- java和mysql (59)
- java中final (62)
- win10安装java (72)
- java启动参数 (64)
- java链表反转 (64)
- 字符串反转java (72)
- java逻辑运算符 (59)
- java 请求url (65)
- java信号量 (57)
- java定义枚举 (59)
- java字符串压缩 (56)
- java中的反射 (59)
- java 三维数组 (55)
- java插入排序 (68)
- java线程的状态 (62)
- java异步调用 (55)
- java中的异常处理 (62)
- java锁机制 (54)
- java静态内部类 (55)
- java怎么添加图片 (60)
- java 权限框架 (55)
本文暂时没有评论,来添加一个吧(●'◡'●)