3v4l.org

run code in 300+ PHP versions simultaneously
<?php $frontendData = [ 'datasheet' => [ 'Name_1_balance0' => 1, // Data block 1 'Name_1_balance2' => 3, // Data block 1 'Name_1_balance13' => 4, // Data block 1 'Name_1_balance1' => 2, // Data block 1 'Name_2_balance0' => 5, // Data block 2 'Name_2_balance2' => 7, // Data block 2 'Name_2_balance3' => 8, // Data block 2 'Name_2_balance1' => 6, // Data block 2 ] ]; uksort($frontendData['datasheet'], 'strnatcmp'); $result = array(); foreach ($frontendData['datasheet'] as $key => $balance) { preg_match('/^(\w+)_balance(\d+)$/', $key, $match); $result[$match[1]][0] = $match[1]; $result[$match[1]][1]['balance'][$match[2]] = $balance; } $result = array('datasheet' => array_values($result)); print_r($result);

preferences:
26.17 ms | 407 KiB | 5 Q