PHP实现:以另一数组中的重复元素作为键创建新数组
按城市分组数组的PHP实现方案
嘿,我来帮你搞定这个需求!看起来你想把原数组里重复的miasto(城市)字段作为新数组的键,然后把对应城市的所有地址条目归到这个键下面对吧?下面给你两种实用的实现方式:
方法一:使用foreach循环(直观易懂)
首先先把你的原数组用标准PHP格式整理出来:
$originalArray = [ [ 'miasto' => 'Tarnów', 'ulica' => 'ul. Kościuszki 120', 'link' => '<a class="cfs-hyperlink" href="/strona-w-budowie" target="_blank"><span class="text"></span></a>' ], [ 'miasto' => 'Tarnów', 'ulica' => 'ul. Pułaskiego 12', 'link' => '<a class="cfs-hyperlink" href="/strona-w-budowie" target=""><span class="text"></span></a>' ], [ 'miasto' => 'Kraków', 'ulica' => 'ul. Test 12', 'link' => '<a class="cfs-hyperlink" href="/strona-w-budowie" target="_blank"><span class="text"></span></a>' ] ];
然后用foreach遍历分组:
// 初始化空数组用于存储分组结果 $groupedArray = []; foreach ($originalArray as $item) { // 取出当前条目的城市名称作为键 $city = $item['miasto']; // 如果该城市对应的键还没创建,先初始化一个空数组 if (!isset($groupedArray[$city])) { $groupedArray[$city] = []; } // 将当前条目添加到对应城市的数组中 $groupedArray[$city][] = $item; } // 打印结果验证 print_r($groupedArray);
运行后你会得到这样的结果:
Array ( [Tarnów] => Array ( [0] => Array ( [miasto] => Tarnów [ulica] => ul. Kościuszki 120 [link] => <a class="cfs-hyperlink" href="/strona-w-budowie" target="_blank"><span class="text"></span></a> ) [1] => Array ( [miasto] => Tarnów [ulica] => ul. Pułaskiego 12 [link] => <a class="cfs-hyperlink" href="/strona-w-budowie" target=""><span class="text"></span></a> ) ) [Kraków] => Array ( [0] => Array ( [miasto] => Kraków [ulica] => ul. Test 12 [link] => <a class="cfs-hyperlink" href="/strona-w-budowie" target="_blank"><span class="text"></span></a> ) ) )
方法二:使用array_reduce(简洁函数式写法)
如果你喜欢更紧凑的代码风格,可以用PHP的array_reduce函数来实现:
$groupedArray = array_reduce($originalArray, function($carry, $item) { $city = $item['miasto']; // 直接将条目追加到对应城市的数组中(PHP会自动创建不存在的键) $carry[$city][] = $item; return $carry; }, []); // 同样可以打印结果验证 print_r($groupedArray);
这个方法和foreach的效果完全一致,只是写法更偏向函数式编程。
额外小提示
如果你的原数组中城市名称存在大小写不一致的情况(比如Tarnów和tarnów),可以把键转换成小写来统一分组:
$city = strtolower($item['miasto']);
这样就能避免因为大小写差异导致的重复键问题啦!
内容的提问来源于stack exchange,提问作者Fadlan
相关产品推荐
相关产品推荐

