PHP使用array_diff()优雅的删除数组中指定的value值

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

          原创地址: 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

   

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
`array_rand()` 函数可以用于从数组中随机选择一个或多个键。如果你要从二维数组中随机选择一个键,则需要先随机选择一个子数组,然后再从该子数组中随机选择一个键。下面是一个示例代码: ```php $array = array( array('a', 'b', 'c'), array('d', 'e', 'f'), array('g', 'h', 'i') ); $random_subarray = $array[array_rand($array)]; // 随机选择一个子数组 $random_key = array_rand($random_subarray); // 从子数组中随机选择一个键 echo $random_subarray[$random_key]; // 输出随机选择的 ``` 在上面的示例代码中,我们首先定义了一个二维数组 `$array`。然后,我们使用 `array_rand()` 函数从 `$array` 中随机选择一个子数组,并将其赋给 `$random_subarray`。接着,我们再次使用 `array_rand()` 函数从 `$random_subarray` 中随机选择一个键,并将其赋给 `$random_key`。最后,我们输出随机选择的。 需要注意的是,如果你想从二维数组中随机选择多个键,则可以使用 `array_rand()` 函数的第二个参数来指定要选择的键的数量。例如,如果你要从上面的示例数组中随机选择两个键,则可以使用以下代码: ```php $random_subarray = $array[array_rand($array)]; $random_keys = array_rand($random_subarray, 2); // 从子数组中随机选择两个键 foreach ($random_keys as $random_key) { echo $random_subarray[$random_key] . " "; } ``` 在上面的示例代码中,我们使用 `array_rand()` 函数的第二个参数来指定要选择的键的数量为 2。然后,我们使用 `foreach` 循环来遍历 `$random_keys` 数组,并输出随机选择的

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值