3v4l.org

run code in 300+ PHP versions simultaneously
<?php $data = [ ['id' => 1, 'name' => 'イワーク', 'place' => '渓谷,洞窟', 'level' => 10, 'technique' => '岩雪崩'], ['id' => 1, 'name' => 'イワーク', 'place' => '砂漠,山頂', 'level' => 20, 'technique' => '岩石砲'], ['id' => 2, 'name' => 'ハガネール', 'place' => '鉱山,地中', 'level' => 10, 'technique' => 'メテオドライブ'], ['id' => 2, 'name' => 'ハガネール', 'place' => '丘陵,窪地', 'level' => 20, 'technique' => 'アイアンローラー'], ]; $result = []; foreach ($data as ['id' => $id, 'name' => $name, 'place' => $places, 'level' => $level, 'technique' => $technique]) { $result[$id] ??= compact('id', 'name'); $place_list = $result[$id]['place_list'] ?? []; $result[$id]['place_list'] = array_merge($place_list, explode(',', $places)); $result[$id]['lv_list'][$level] = compact('level', 'technique'); } var_dump($result);
Output for 8.1.23 - 8.1.33, 8.2.10 - 8.2.29, 8.3.0 - 8.3.27, 8.4.1 - 8.4.14
array(2) { [1]=> array(4) { ["id"]=> int(1) ["name"]=> string(12) "イワーク" ["place_list"]=> array(4) { [0]=> string(6) "渓谷" [1]=> string(6) "洞窟" [2]=> string(6) "砂漠" [3]=> string(6) "山頂" } ["lv_list"]=> array(2) { [10]=> array(2) { ["level"]=> int(10) ["technique"]=> string(9) "岩雪崩" } [20]=> array(2) { ["level"]=> int(20) ["technique"]=> string(9) "岩石砲" } } } [2]=> array(4) { ["id"]=> int(2) ["name"]=> string(15) "ハガネール" ["place_list"]=> array(4) { [0]=> string(6) "鉱山" [1]=> string(6) "地中" [2]=> string(6) "丘陵" [3]=> string(6) "窪地" } ["lv_list"]=> array(2) { [10]=> array(2) { ["level"]=> int(10) ["technique"]=> string(21) "メテオドライブ" } [20]=> array(2) { ["level"]=> int(20) ["technique"]=> string(24) "アイアンローラー" } } } }

preferences:
88.17 ms | 410 KiB | 5 Q