3v4l.org

run code in 300+ PHP versions simultaneously
<?php function multiKeyIt($array, $numKeys) { $multiKeyed = []; foreach($array as $row) { if(!isset($countFields)) { $countFields = count($row); } $arrRef = &$multiKeyed; $theKey = reset($row); for($k = 0; $k < $numKeys; $k++) { if(!isset($arrRef[$theKey])) { $arrRef[$theKey] = array(); } $arrRef = &$arrRef[$theKey]; $theKey = next($row); } //$arrRef = $countFields > $numKeys + 1 ? array_merge($arrRef, array_slice($row,$numKeys)) : implode(', ', array_slice($row,$numKeys)); $arrRef = array_merge($arrRef, array_slice($row,$numKeys)); } return $multiKeyed; } $arr =[ ['key'=>'val_k1', 'val2', 'key1_2'=>'val_d1_2', 'key2_2'=>'val_d2_2'], ['key'=>'val_k1', 'val3', 'key1_3'=>'val_d1_3', 'key2_3'=>'val_d2_3'], ['key'=>'val_kx1', 'val3', 'key1_3'=>'val_d1_x3', 'key2_3'=>'val_d2_3'], ]; echo "<pre>"; $da = multiKeyIt($arr, 1); echo "\n!da(1)=".print_r($da,true); $da = multiKeyIt($arr, 2); echo "\n!da(2)=".print_r($da,true); $da = multiKeyIt($arr, 3); echo "\n!da(3)=".print_r($da,true); $da = multiKeyIt($arr, 4); echo "\n!da(4)=".print_r($da,true); $da = multiKeyIt($arr, 5); echo "\n!da(5)=".print_r($da,true); $da = multiKeyIt($arr, 6); echo "\n!da(6)=".print_r($da,true); echo "</pre>";

preferences:
71.29 ms | 402 KiB | 5 Q