引言

PHP的数组,说白了就是一个映射的键值对集合。那么如何从数组元素中删除元素呢?你肯定首先想到遍历数组,然后找到目标项,然后删除。

我看到有同学将要删除的元素 = null,这并不起作用,因为 null 也是作为值存在的。并不能移除元素。

本文就专门说说移除数组元素的方法。

学习时间

大致上说,移除数组元素,有两个常用方法,一个是 unset 函数,一个是 array_splice 函数。

array_splice 什么时间使用?就是你拿到的是值,却不知道其索引,就要用这个了。

unset 函数

请注意,使用 unset 函数不会重新构建索引,数组不会洗牌。如果你想要在删除元素后重新创建索引,那就执行 array_values,返回的数组就是重新编排过索引的了。并且所有索引被设置成默认从0开始的数字。

举例说明:

$array = [0 => "a", 1 => "b", 2 => "c"];unset($array[1]);

执行该操作后,数组 $array 的值如下:

[    [0] => a    [2] => c]

可以注意到数组索引没有变化。

array_splice 函数

这个函数在移除元素后,关联数组的对应关系不会改变,此函数的参数形式:

array array_splice( array &$input, int $offset[, int $length = 0[, mixed $replacement]] )

用来把数组中的一部分去掉并用其它值取代 。如果最后的参数 $replaement 不传,就是默认为把 $offset 开始的 $length 个元素删除。

如果是数字索引,返回的数组会重新编排索引值:

$array = [0 => "a", 1 => "b", 2 => "c"];array_splice($array, 1, 1);

返回的值:

[    [0] => a    [1] => c]

可以看到索引被重新编排了。

再深一步

上面说的两个示例,都是单个元素的删除。下面说说移除多个数组元素。

unset / arraysplice 用起来太繁琐了,要一个一个地操作。如果我们知道了数组元素的键,或者值,则可以使用 array_diff / array_diff_key 来进行批量操作。

array_diff 函数

比如已知要删除的元素的值,可以像下面这样移除:

$array = [0 => "a", 1 => "b", 2 => "c"];$array = array_diff($array, ["a", "c"]);

结果输出:

[    [1] => b]

数组的索引并不会被重建。

array_diff_keys 函数

如果已知要删除元素的索引,可以通过下面这样删除:

$array = [0 => "a", 1 => "b", 2 => "c"];$array = array_diff_key($array, [0 => "xy", "2" => "xy"]);

执行后输出:

[    [1] => b]

索引没有重建。

写在最后

本文我们通过几个示例,演示了数组移除元素的方式,不要再一个 for 循环走遍天下了。PHP 提供了许多有利于减少冗余代码的函数工具,我们应该用起来。

Happy coding :_)

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

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

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

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

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

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

  3. 7. awk数组,定义数组,判断元素是否存在,非数字下标,删除元素,查询数组

    文章目录 前言 定义数组 元素是否存在 非数字下标 删除元素 查询数组 前言 本小节会详细介绍awk当中的数组 定义数组 在awk中可以直接为数组中的元素赋值即可,示例.awk中数组的下标默认是从1开 ...

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

    引言 PHP 数组操作,之前我们讲了如何根据值,进行多维数组的排序.今天说一说,如何根据值,进行数组元素的删除. 学习时间 假设有一个一维数组,单纯的数字数组.为了简化问题,我们假设数组元素没有重复项 ...

  5. python数组加入新元素_Python之list添加新元素、删除元素、替换元素

    现在,班里有3名同学: >>> L = ['Adam', 'Lisa', 'Bart'] 今天,班里转来一名新同学 Paul,如何把新同学添加到现有的 list 中呢? 第一个办法是 ...

  6. 在项目实践中用更优雅的方式处理数组问题

    在最近的项目中,遇到了比较多处理数组的场景,比如要对数组里面某个元素的某一个字段进行抽取归类,或者判断数组当中的某个元素是否符满足判断条件等. 网上关于使用ES5新的的API来代替for循环的文章已经 ...

  7. python list删除元素_python中List添加、删除元素的几种方法

    原博文 2015-06-21 18:51 − 一.python中List添加元素的几种方法 List 是 Python 中常用的数据类型,它一个有序集合,即其中的元素始终保持着初始时的定义的顺序(除非 ...

  8. python字典删除元素_Python简单遍历字典及删除元素的方法

    本文实例讲述了Python简单遍历字典及删除元素的方法.分享给大家供大家参考,具体如下: 这种方式是一定有问题的: d = {'a':1, 'b':2, 'c':3} for key in d: d. ...

  9. 原生js清空上一个元素内容_原生js系列 删除元素

    // 删除id var idObject = document.getElementById('sidebar'); if (idObject != null) idObject.parentNode ...

最新文章

  1. 只想多吃,而不考虑能吃掉多少——如何恰到好处的按需进度规划?
  2. 有时候,爱就是那么简单
  3. 计算机原理存储器实验报告,计算机组成原理存储器实验报告.doc
  4. poi的sax模式读取xls_POI SAX 如何修改大excel 文件内容-问答-阿里云开发者社区-阿里云...
  5. .ne中的控制器循环出来的数据如何显示在视图上_【asp.net core 系列】3 视图以及视图与控制器...
  6. ReplacingMergeTree:实现Clickhouse数据更新
  7. Netty 5用户指南
  8. 10条设计推荐系统的经验和教训
  9. Floppy Zip Disk Rescue注册码分析
  10. SpringBoot 微信H5支付
  11. Haar特征提取算法的实现
  12. 计算机设备属于什么会计科目,​机器设备属于什么会计科目
  13. 淘宝商品关键词搜索排名查询
  14. 题目 1549: 盾神与积木游戏
  15. 梳理19年上半年图文记录笔记(php和laravel )
  16. 【web前端】前端性能优化指南,还不来看看?
  17. 众里寻他千百度,不如用它来搜库!
  18. php-fpm彻底解决502(php-fpm多开、nginx限制并发、定时重启)解决网站卡顿的终极奥义
  19. #Revit二次开发#内部单位转化
  20. 选择高光阴影中间调的方法

热门文章

  1. java8 朗姆表达式,java同步数据库时间问题[问题点数:20分,结帖人vtison]
  2. python中hub_PyHubWeekly | 第一期:Github上那些值得推荐的Python小工具
  3. mysql java教程_mysql总结
  4. REDM库使用教程01(详细入门)
  5. Conditional Jump Instructions
  6. OpenGL学习笔记:颜色(RGBA颜色,颜色索引模式)
  7. OpenCV学习笔记:创建/分配图像、图像读写保存、图像像素点访问修改
  8. 信号完整性与电源完整性分析_电源完整性,信号完整性,你说哪个更重要一点?...
  9. 用友加密狗显示停止服务器,插上加密狗打开用友,显示下图,请问如何解决问题...
  10. Centos、Ubuntu的区别