PHP 如何删除二维数组中value字段为null的子项并重置数组索引
实现方案
方式1:使用array_filter(简洁高效,无需手动遍历)
这是PHP中处理数组过滤最常用的写法,代码量少可读性高:
// 原数组(已修正PHP数组键值赋值语法,需用=>而非=) $array = [ 0 => ["field" => 1, "value" => "strawberry"], 1 => ["field" => 2, "value" => null], 2 => ["field" => 3, "value" => "apple"] ]; // 过滤掉value为null的元素 $array = array_filter($array, function($item) { // 严格判断等于null,避免误删空字符串、0等合法值 return $item['value'] !== null; }); // 重置数组索引为连续的0起始序列,符合你需要的输出结构 $array = array_values($array);
方式2:foreach遍历删除(适合需要同步做其他遍历逻辑的场景)
如果你在过滤的同时还要对其他元素做业务处理,可以用手动遍历的方式:
foreach ($array as $key => $item) { if ($item['value'] === null) { // 直接删除符合条件的数组元素 unset($array[$key]); } } // 同样需要重置索引保证连续 $array = array_values($array);
注意事项
- 不要直接省略
array_filter的回调参数,默认的过滤规则会把0、空字符串、false等和null一起删除,不符合需求 - 两种方式最后都需要调用
array_values重置索引,否则删除元素后数组的索引会保留原有序号(比如删除索引1的元素后,剩下的索引是0和2),和你需要的输出结构不符
内容的提问来源于stack exchange,提问作者Raskoljnikovic
相关产品推荐
相关产品推荐

