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);
Output for 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.33, 8.2.0 - 8.2.29, 8.3.0 - 8.3.25, 8.4.1 - 8.4.12
Array ( [datasheet] => Array ( [0] => Array ( [0] => Name_1 [1] => Array ( [balance] => Array ( [0] => 1 [1] => 2 [2] => 3 [13] => 4 ) ) ) [1] => Array ( [0] => Name_2 [1] => Array ( [balance] => Array ( [0] => 5 [1] => 6 [2] => 7 [3] => 8 ) ) ) ) )

preferences:
129.42 ms | 411 KiB | 5 Q