」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 如何使用點符號鍵將多維 PHP 陣列轉換為二維陣列?

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

發佈於2025-01-15
瀏覽:183

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

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

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

轉換嵌套數組的遞歸函數

幸運的是,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;
}

說明:

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

輸出:

此函數將產生所需的有點表示法的二維數組鍵:

$newArray = array(
    'key1' => 'value1',
    'key2.subkey' => 'subkeyval',
    'key3' => 'value3',
    'key4.subkey4.subsubkey4' => 'subsubkeyval4',
    'key4.subkey4.subsubkey5' => 'subsubkeyval5',
    'key4.subkey5' => 'subkeyval5'
);
最新教學 更多>

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3