PHP如何搜索多维数组并根据匹配结果生成新数组
PHP多维数组过滤特定值的实现方案
方案1:使用array_filter(推荐,最简洁)
直接通过回调规则过滤匹配的数组项,天然适配多匹配项的筛选场景:
// 你的原始数组 $originalArr = [ ['make' => 'honda', 'type' => 'motorcycle'], ['make' => 'toyota', 'type' => 'truck'], ['make' => 'acura', 'type' => 'car'], ['make' => 'subaru', 'type' => 'car'] ]; // 筛选type为car的项 $targetArr = array_filter($originalArr, function($item) { return $item['type'] === 'car'; }); // 重置数组为从0开始的连续索引(和你期望的输出格式完全对齐) $targetArr = array_values($targetArr);
方案2:沿用以array_column为基础的思路
你原本用的array_search只能返回第一个匹配值的键,要获取所有匹配的键需要搭配array_keys使用:
// 提取所有type字段组成一维数组 $typeList = array_column($originalArr, 'type'); // 获取所有type为car的原始数组键名 $matchedKeys = array_keys($typeList, 'car'); // 遍历匹配键构造目标数组 $targetArr = []; foreach ($matchedKeys as $key) { $targetArr[] = $originalArr[$key]; }
内容的提问来源于stack exchange,提问作者Steve
相关产品推荐
相关产品推荐

