首頁  >  文章  >  後端開發  >  如何使用點符號鍵將多維 PHP 陣列轉換為二維陣列?

如何使用點符號鍵將多維 PHP 陣列轉換為二維陣列?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-10-28 00:24:29548瀏覽

How to Convert Multidimensional PHP Arrays to 2D Arrays with Dot Notation Keys?

將多維PHP 數組轉換為帶有有點表示法鍵的二維數組

將多維數位展平帶有點表示法鍵的二維數組可能有益於各種場景。它允許您使用點表示法無縫存取嵌套數組值,從而增強程式碼的可讀性和可維護性。

轉換巢狀數組的遞歸函數

幸運的是,PHP 提供了遞歸函數可以優雅地實現此轉換的函數:

<code class="php">$result = array();
$ritit = new RecursiveIteratorIterator(new RecursiveArrayIterator($myArray));

foreach ($ritit as $leafValue) {
    $keys = array();
    foreach (range(0, $ritit->getDepth()) as $depth) {
        $keys[] = $ritit->getSubIterator($depth)->key();
    }
    $result[join('.', $keys)] = $leafValue;
}</code>

說明:

  • RecursiveIteratorIterator 和RecursiveArrayIterator 類別用於遞歸地迭代嵌套數組。
  • 在每次迭代期間,RecursiveArrayIterator 的 key 方法用於捕獲數組的當前鍵。
  • getSubIterator($depth) 方法用於檢索特定位置處的子迭代器深度,讓我們可以迭代嵌套數組。
  • range(0, $ritit->getDepth()) 函數建立一個深度數組,從最內層數組遍歷到最外層數組。
  • join('.', $keys) 函數將陣列鍵與點 (.) 作為分隔符號連接起來,建立點符號鍵。
  • 產生的鍵值對儲存在$result array.

輸出:

此函數將產生帶有有點符號鍵的所產生需二維數組:

<code class="php">$newArray = array(
    'key1' => 'value1',
    'key2.subkey' => 'subkeyval',
    'key3' => 'value3',
    'key4.subkey4.subsubkey4' => 'subsubkeyval4',
    'key4.subkey4.subsubkey5' => 'subsubkeyval5',
    'key4.subkey5' => 'subkeyval5'
);</code>

以上是如何使用點符號鍵將多維 PHP 陣列轉換為二維陣列?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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