我有以下內容:$array = array(1,2,3,4,5,6);我需要“旋轉”它以獲得:Array ( [0] => 1 [1] => 4 [2] => 2 [3] => 5 [4] => 3 [5] => 6 )我所說的“樞軸”是指,讓我們假設該數組存儲了一個 2 x 3 矩陣(2 行和 3 列)。我的目標是旋轉它,使矩陣現在是一個 3 x 2 矩陣(3 行,2 列)為此,我當然需要一個額外的參數,比方說“行數”(在這種情況下,這就像 2 行)我做了以下事情:function pivotArray($array, $nbrRows){ $countTotal = count($array); $countCols = $countTotal / $nbrRows; $chunk = array_chunk($array,$countCols); $out = array(); for ($row=0;$row<$nbrRows;$row++) { for ($col=0;$col<$countCols;$col++) { $out[$col][$row] = $chunk[$row][$col]; } } $arraySingle = call_user_func_array('array_merge', $out); return $arraySingle; }它按設計工作,但我想知道是否有更好的方法來做到這一點?例如避免 2 for 循環?并避免 array_merge ?
1 回答

FFIVE
TA貢獻1797條經驗 獲得超6個贊
這段代碼沒有對數組進行多次處理,而是構建了一個中間數組并基于 展開元素$position % $countCols。我還介紹了ceil()列數,以防元素數量為奇數......
function pivotArray($array, $nbrRows)
{
$countTotal = count($array);
$countCols = ceil($countTotal / $nbrRows);
$arraySingle = [];
foreach ( $array as $position => $value ) {
$arraySingle[$position % $countCols][] = $value;
}
return array_merge(...$arraySingle);
}
- 1 回答
- 0 關注
- 127 瀏覽
添加回答
舉報
0/150
提交
取消