首頁 >後端開發 >php教程 >如何在 PHP 中高效轉置多維數組?

如何在 PHP 中高效轉置多維數組?

Barbara Streisand
Barbara Streisand原創
2024-12-26 12:05:14559瀏覽

How Can I Efficiently Transpose Multidimensional Arrays in PHP?

在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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn