<?php
$array = [
'id_1_1' => 'id1',
'foo_1_2' => 'value1_1',
'bar_1_3' => 'value1_2',
'more_1_4' => 'value1_3',
'id_2_1' => 'id2',
'foo_2_2' => 'value2_1',
'bar_2_3' => 'value2_2',
'more_2_4' => 'value2_3'
];
function convert($a) {
$map = [
];
$result = [];
foreach ($a as $array_key => $value) {
list($newkey, $number) = explode('_', $array_key);
if ($newkey === 'id') {
$map[$number] = $value;
$result[$value] = [];
} elseif (key_exists($number, $map)) {
$id = $map[$number];
$result[$id][$newkey] = $value;
}
}
return $result;
}
$result = convert($array);
var_export($result);
preferences:
53.72 ms | 402 KiB | 5 Q