在PHP 中轉置多維數組:翻轉和泛化
轉置多維數組是一種翻轉行和列的操作,有效地旋轉數組90度。為了解決這個常見的程式設計任務,讓我們探索一個可以為二維和高維數組完成此任務的 PHP 函數。
轉置二維數組
對於二維數組,例如問題中提供的範例,轉置它是一個簡單的過程。以下名為transpose 的函數可以實現此目的:
function transpose($array) { array_unshift($array, null); return call_user_func_array('array_map', $array); }
該函數的工作原理是添加一個null 元素作為數組的第一個索引,然後使用array_map 迭代每一行並建立新數組
例如,要轉置問題中給出的$foo陣列:
$bar = transpose($foo); var_dump($bar[2]);
這將輸出所需的內容結果:
array(3) { ["a"]=> string(2) "a2" ["b"]=> string(2) "b2" ["c"]=> string(2) "c2" }
推廣到高維數組
轉置函數可以推廣到使用遞歸處理任何維度的陣列。操作方法如下:
function multi_transpose($array) { if (!is_array($array)) { return array($array); } $transposed = array(); foreach ($array as $key => $value) { $transposed[] = multi_transpose($value); } return call_user_func_array('array_map', $transposed); }
此函數將陣列作為輸入,並在陣列的值上遞歸呼叫自身。基本情況是當值不再是數組時,在這種情況下,它會傳回包含該值的單元素數組。對於數組,它會遞歸地轉置每個值,並使用 array_map 將它們組合成最終的轉置數組。
使用 multi_transpose 函數與二維轉置函數類似:
$multi_dimensional_array = ...; $transposed = multi_transpose($multi_dimensional_array);
這個函數可以處理任意嵌套的數組,並透過將其維度翻轉 90 度來轉置它們。
以上是如何在 PHP 中高效轉置多維數組?的詳細內容。更多資訊請關注PHP中文網其他相關文章!