引言

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 :_)

我是 @程序员小助手 ,持续分享编程知识,欢迎关注。

php 二维数组根据键值合并二维数组_3分钟短文 | PHP 根据值移除数组元素,哪个方法最简单?...相关推荐

  1. php 二维数组根据键值合并二维数组_php数组根据某键值,把相同键值的合并最终生成一个新的二维数组...

    匿名用户 1级 2013-12-29 回答 php数组根据某一个键值,把相同键值的合并生成一个新的二维数组 源数据: $infos = array( array( 'a' => 36, 'b' ...

  2. php 二维数组根据键值合并二维数组_php数组实现根据某个键值将相同键值合并生成新二维数组的方法详解...

    这篇文章主要介绍了php数组实现根据某个键值将相同键值合并生成新二维数组的方法,涉及php数组的遍历.赋值相关运算技巧,需要的朋友可以参考下 本文实例讲述了php数组实现根据某个键值将相同键值合并生成 ...

  3. php 去掉多维数组的键名,去除多维数组的最外层key 保留值

    如果你是要将JSON转成PHP数组,方法如下 首先,你这个数据格式是JSON的,要先转成PHP数组. $a = json_decode($a, TRUE); json_decode第二个参数为TRUE ...

  4. 移除数组第一个元素_3分钟短文 | PHP 数组删除元素,忘了foreach吧,有更优雅的方式...

    引言 PHP的数组,说白了就是一个映射的键值对集合.那么如何从数组元素中删除元素呢?你肯定首先想到遍历数组,然后找到目标项,然后删除. 我看到有同学将要删除的元素 = null,这并不起作用,因为 n ...

  5. input位置_3分钟短文 | PHP 数组任意位置插入新元素,你是怎么处理的?

    引言 接着我们这个系列的文章说.本文我们聊一聊 PHP 数组,如何在任意位置插入新元素.因为内置函数并没有提供类似 array_insert(&$array, $pos, $items) 的函 ...

  6. group by很多字段是不是会很慢_3分钟短文 | MySQL在分组时,把多列合并为一个字段!

    引言 今天我们来说一个MySQL查询的例子,比如有一个统计需求, 分组后的数据,我们知道只能使用聚合函数进行统计, 那如果要根据分组约定,将一系列的值合并到单个字段显示出来, 应该怎么写呢? 学习时间 ...

  7. laravel $request 多维数组取值_3分钟短文:Laravel的“南天门”,过滤掉七七八八的数据...

    引言 上一章我们教会大家如何从用户表单内正确地获取数据,可是没有讲,获取到的数据到底有啥用,或者说,有的用户提交的数据压根儿就没正经填,那些错乱无效的数据,如果直接放到数据库,纯粹是对数据库的污染. ...

  8. laravel $request 多维数组取值_3分钟短文 | Laravel 内3种数据校验的写法,你喜欢哪一个?...

    引言 web应用程序公开访问几乎没有不带用户交互的,难免要接收用户输入的奇奇怪怪的东西.对于后端程序,必须对输入的内容进行有效性过滤. 这就是本文的重点,说一说laravel中输入请求的校验. 学习时 ...

  9. 接口怎么获取数组底下的数组_3分钟短文 | PHP数组获取最后一个元素,10个方式中哪个有错?...

    引言 我们对于 PHP 的数组操作乐此不疲,为什么?因为 PHP 编程你几乎时时刻刻都在于数组打交道,对于数组的操作熟练程度,很大一部分因素关系着代码的优劣. 今天我们来说说,如何获取数组的最后一个元 ...

最新文章

  1. [概统]本科二年级 概率论与数理统计 第三讲 离散型随机变量
  2. UA MATH566 统计理论7 还有一个例子:推导卡方检验
  3. Unix哲学,Microservices和DDD (2)
  4. hdu2063 二分图(基础题)
  5. 记录一次dubbo项目实战
  6. 公司正式宣布创业失败!
  7. Oauth 2.0概述
  8. POJ1734无向图求最小环
  9. App内存优化-实践
  10. 从pandas到geopandas
  11. h5+js调取相机做取景框_iPhone 12 相机操作指南,用好了随手一拍就是大片!
  12. 【备忘】年薪50万2018年最新北风网大数据Spark2.0从入门到精通视频教程
  13. 数据库面试题(答案)
  14. 解决打开pdf时“在禁用UAC时,无法激活此应用”
  15. Ubuntu18.04LTS安装TigerVNC
  16. Flutter开发:使用SafeArea(安全区域)
  17. Scrapy框架采集微信公众号数据,Python大佬机智操作绕过反爬验证码
  18. 使用O2OA二次开发搭建企业办公平台(十三)流程开发篇:报销审批流程表单开发...
  19. opencv笔记(二)之opencv打开笔记本摄像头
  20. Excel中这个汇总神器:数据透视表到底能干什么?

热门文章

  1. 如何使用SQL Server配置管理器
  2. jQuery事件绑定
  3. freemarker和thymeleaf的使用样例
  4. 【游戏开发】Excel表格批量转换成CSV的小工具
  5. 1619. [HEOI2012]采花
  6. 谈谈我的session跨域处理方法
  7. Swift 2.2 最基本的多线程
  8. Centos6.6安装Nginx
  9. php 弹出指定窗口大小,弹出div或者弹出新窗口的固定位置、固定大小
  10. 突破验证,安装Media Player11.