<?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);
- Output for 5.6.38, 7.0.33, 7.1.0 - 7.1.25, 7.2.0 - 7.2.33, 7.3.0 - 7.3.33, 7.4.0 - 7.4.33, 8.0.0 - 8.0.30, 8.1.0 - 8.1.28, 8.2.0 - 8.2.18, 8.3.0 - 8.3.4, 8.3.6
- array (
'id1' =>
array (
'foo' => 'value1_1',
'bar' => 'value1_2',
'more' => 'value1_3',
),
'id2' =>
array (
'foo' => 'value2_1',
'bar' => 'value2_2',
'more' => 'value2_3',
),
)
- Output for 8.3.5
- Warning: PHP Startup: Unable to load dynamic library 'sodium.so' (tried: /usr/lib/php/8.3.5/modules/sodium.so (libsodium.so.23: cannot open shared object file: No such file or directory), /usr/lib/php/8.3.5/modules/sodium.so.so (/usr/lib/php/8.3.5/modules/sodium.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0
array (
'id1' =>
array (
'foo' => 'value1_1',
'bar' => 'value1_2',
'more' => 'value1_3',
),
'id2' =>
array (
'foo' => 'value2_1',
'bar' => 'value2_2',
'more' => 'value2_3',
),
)
preferences:
181.81 ms | 402 KiB | 180 Q