专栏首页程序员小助手3分钟短文 | PHP 根据值移除数组元素,哪个方法最简单?

3分钟短文 | PHP 根据值移除数组元素,哪个方法最简单?

引言

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

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

本文分享自微信公众号 - 程序员小助手(mql45ea),作者:Rman

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-06-28

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 3分钟短文 | PHP 判断数组key是否存在,你用isset?赶紧改!

    接着我们的 PHP 数组操作系列文章继续写。今天说一说如何判断数组的key是否存在?

    程序员小助手
  • 3分钟短文 | PHP数组获取最后一个元素,10个方式中哪个有错?

    我们对于 PHP 的数组操作乐此不疲,为什么?因为 PHP 编程你几乎时时刻刻都在于数组打交道,对于数组的操作熟练程度,很大一部分因素关系着代码的优劣。

    程序员小助手
  • 3分钟短文 | PHP多维数组搜索值,就只能for循环?这样写更高效

    我们讲解了很多种PHP数组操作的引用场景。今天我们接着分享这方面的知识,说一说对于多维数组,如何根据值搜索,并返回数组的索引值。

    程序员小助手
  • Laravel5.8代码中Get到的小彩蛋

    项目中常常有这么一种场景,一些数据的生成需要一些其他的数据获得,但是返回给用户的不需要原始数据。比如对于一个用户数据如下:

    写PHP的老王
  • PHP实现提取多维数组指定一列的方法总结

    本文实例讲述了PHP实现提取多维数组指定一列的方法。分享给大家供大家参考,具体如下:

    砸漏
  • 验证规则

    (adsbygoogle = window.adsbygoogle || []).push({});

    双面人
  • Numpy 多维数据数组的实现

    numpy包(模块)几乎总是用于Python中的数值计算。这个软件包为Python提供了高性能的向量、矩阵、张量数据类型。它是在C和Fortran中创建的,因此...

    砸漏
  • Kubernetes 1.9发布:Apps Workloads通用版本与生态系统扩展

    我们很高兴在今年之内进行第四次——也是最后一次版本更新公告,即Kubernetes 1.9的诞生!

    Debian中国
  • Python - //和/的区别

    小菠萝测试笔记
  • asp函数split()对应php函数explode()

    砸漏

扫码关注云+社区

领取腾讯云代金券