加入收藏 | 设为首页 | 会员中心 | 我要投稿 我爱资讯网 (https://www.52junxun.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

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

发布时间:2022-10-11 10:45:44 所属栏目:PHP教程 来源:
导读:  引言

  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 函数PHP多维数组,计算差集,可以删除任意多个元素的值:
 
  array_diff( [312, 401, 15, 401, 3], [401] )
  但是这个函数会有副作用,就是返回值是新的数组,保持索引键值不变。同时,原数组内容保持不变。
 
  深入使用
 
  上面我们给定的前提非常简单,就是加入数组内都是不同的数据。实际应用中,很难保证这一点。除非是模型返回的主键,或者做了 unique 约束的字段,否则不能保证数据集内没有相同的值。
 
  手册上也说了,这样根据值移除数据内所有对应元素的,应该使用 array_keys 函数。
 
  foreach (array_keys($messages, 401, true) as $key) {
      unset($messages[$key]);
  }
  函数 array_keys 第三个参数为可选项,用于标记是否严格筛选模式。
 
  写在最后
 
  本文通过不同的方法,演示了如何从数组中,根据值移除相应元素的方法。
 

(编辑:我爱资讯网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!