PHP使用array 您所在的位置:网站首页 unsetphp数组 PHP使用array

PHP使用array

2023-08-18 16:33| 来源: 网络整理| 查看: 265

          不禁意间浏览 【白哥】 的博客发现的!!!     

          原创地址: https://baijunyao.com/article/186  ;

          这次转载仅仅记录下来,为了以后复习嘛。

 

在开发过程中经常需要删除数组中某个值; 比如说有个数组;

$names = [ '张三', '李四', '王麻子' ]

 

我们希望删除 李四 这个值; 常规的思路是先用 array_search 函数获取 李四 在 $names 中的键名; 然后使用 unset 删除; 为了严谨还得判断李四是否存在;

$key = array_search('李四', $names); if ($key !== false) { unset($names[$key]); }

 

这里有个坑是为了避免要删除的值在数组第0个位置的时候; 此处不能使用 if($key) 来判断; 而是应该使用if ($key !== false) ; 另外unset 不会重新格式化数组的key ; 操作完后会是这个样子的;

 

这个0和2少了1很是难受; 上面这两种操作中我们还可以用 array_splice 替代 unset;

if ($key !== false) { array_splice($names, $key, 1); }

 

而且一旦数组中有多个李四;

$names = [ '张三', '李四', '王麻子', '李四' ];

 

那上面这种方式还只能删除第一个李四; 如果要删除全部的李四就需要循环了;

foreach ($names as $k => $v) { if ($v === '李四') { unset($names[$k]); } }

 

除了上面这些常规操作; 还有一个骚操作是利用 array_flip 两次反转数组;

$names = [ '张三', '李四', '王麻子', '李四', ]; $names = array_flip($names); unset($names['李四']); $names = array_flip($names);

 

罢特如果王麻子也有两个的话; 因为键名不能重复的原因; 这种操作后只会保留1个王麻子; 因此这种方式不够完美; 文章磨磨唧唧终于算是讲到了最后; 拿出了标题中的array_diff;array_diff 本来是用来计算数组的差集; 8过根据我们小学学过的知识扩展下; 这个求差集可以用来删除数组指定的值; 如果忘了差集的概念; 现在可以翻开小学数学课本三年级上册《集合》复习下了;

$names = [ '张三', '李四', '王麻子', '李四', ]; $names = array_diff($names, ['李四']);

 

array_diff 跟 unset 一样并不会格式化键名; 如果需要格式化键名; 就再加个 array_value;

$names = [ '张三', '李四', '王麻子', '李四', ]; $names = array_values(array_diff($names, ['李四']));

 

          

      最后想要加入群聊的可以    搜索群 : 88199093   或扫码  QQ

   



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有