3v4l.org

run code in 300+ PHP versions simultaneously
<?php $arr = [ 'history' => [ 'id' => 23452435, 'legend' => [ ['player' => 'me', 'turn' => 1, 'card' => ['name' => 'foo']], ['player' => 'me', 'turn' => 1, 'card' => ['name' => 'bar']], ['player' => 'opponent', 'turn' => 1, 'card' => ['name' => 'derp']], ['player' => 'opponent', 'turn' => 2, 'card' => ['name' => 'hoo']], ], ] ]; $historyByTurns = array(); foreach ($arr['history'] as $historyItem) { foreach ($historyItem['legend'] as $legendItem) { $turn = $legendItem['turn']; $player = $legendItem['player']; if (!array_key_exists($turn, $historyByTurns)) { $historyByTurns[$turn] = array(); } if (!array_key_exists($player, $historyByTurns[$turn])) { $historyByTurns[$turn][$player] = array(); } foreach ($legendItem as $card) { $historyByTurns[$turn][$player][] = $card['name']; } } } var_export($historyByTurns);

preferences:
30.87 ms | 404 KiB | 5 Q