3v4l.org

run code in 300+ PHP versions simultaneously
<?php $array= [ ['name' => 'block.0.name', 'value' => 'vda'], ['name' => 'block.0.backingIndex', 'value' => 2], ['name' => 'block.0.rd.reqs', 'value' => 248907], ['name' => 'block.0.rd.bytes', 'value' => 9842014208], ['name' => 'block.0.rd.times', 'value' => 372870570891], ['name' => 'block.1.name', 'value' => 'hda'], ['name' => 'block.1.backingIndex', 'value' => 30], ['name' => 'block.1.rd.reqs', 'value' => 2871], ['name' => 'block.1.rd.bytes', 'value' => 9677156], ['name' => 'block.1.rd.times', 'value' => 620637479], ['name' => 'block.2.name', 'value' => 'cda'], ['name' => 'block.2.backingIndex', 'value' => 30], ['name' => 'block.2.rd.reqs', 'value' => 2871], ['name' => 'block.2.rd.bytes', 'value' => 9677156], ['name' => 'block.2.rd.times', 'value' => 620637479], ['name' => 'vcpu.0.state', 'value' => 1], ['name' => 'vcpu.0.time', 'value' => 963654400000000], ['name' => 'vcpu.0.wait', 'value' => 0], ['name' => 'vcpu.1.state', 'value' => 1], ['name' => 'vcpu.1.time', 'value' => 936409070000000], ['name' => 'vcpu.1.wait', 'value' => 0], ['name' => 'vcpu.2.state', 'value' => 1], ['name' => 'vcpu.2.time', 'value' => 943396180000000], ['name' => 'vcpu.2.wait', 'value' => 0], ['name' => 'vcpu.3.state', 'value' => 1], ['name' => 'vcpu.3.time', 'value' => 959496330000000], ['name' => 'vcpu.3.wait', 'value' => 0], ['name' => 'balloon.current', 'value' => 16777216], ['name' => 'balloon.maximum', 'value' => 34534530], ['name' => 'balloon.swap_in', 'value' => 0], ['name' => 'balloon.swap_out', 'value' => 0], ['name' => 'balloon.major_fault', 'value' => 262], ['name' => 'balloon.minor_fault', 'value' => 132293], ['name' => 'balloon.unused', 'value' => 16153712], ['name' => 'balloon.available', 'value' => 16396312], ]; $result = []; foreach ($array as ['name' => $name, 'value' => $value]) { $parts = explode('.', $name); $parentKey = $parts[0] . 's'; $childKey = implode(array_splice($parts, 0, ctype_digit($parts[1]) ? 2 : 1)); $grandchildKey = implode('.', $parts); if ($grandchildKey !== 'name') { $result[$parentKey][$childKey][$grandchildKey] = $value; } } var_export($result);

preferences:
30.33 ms | 408 KiB | 5 Q