PHP中如何根据数组元素的指定字段值筛选分割数组?
实现方案
你要实现的是按子数组指定字段的值拆分二维数组,最直接高效的方式是单次遍历原数组完成两个结果集的构建,只需要循环一次,不会额外消耗多余性能:
// 假设你的原二维数组为$sourceArray $target = []; // 存储b字段值为123的子数组 $remain = []; // 存储剩余子数组 foreach ($sourceArray as $item) { if ($item['b'] === '123') { $target[] = $item; } else { $remain[] = $item; } }
上述代码得到的$target和$remain就是你需要的两个新数组,默认就是连续数字索引,和你给出的预期输出结构完全一致。
如果你偏好使用PHP内置数组函数实现,也可以用array_filter进行两次筛选,注意筛选后如果需要重置索引,可以配合array_values使用:
// 筛选符合条件的数组 $target = array_values(array_filter($sourceArray, function($item) { return $item['b'] === '123'; })); // 筛选剩余数组 $remain = array_values(array_filter($sourceArray, function($item) { return $item['b'] !== '123'; }));
这种方式代码更简洁,但因为需要遍历两次原数组,性能略低于单次遍历的方案,数据量不大的场景下使用没有区别。
内容的提问来源于stack exchange,提问作者geo
相关产品推荐
相关产品推荐

