首頁 >後端開發 >php教程 >如何在 PHP 中將點語法字串遞歸轉換為多維數組?

如何在 PHP 中將點語法字串遞歸轉換為多維數組?

Patricia Arquette
Patricia Arquette原創
2024-11-29 05:28:17632瀏覽

How Can I Recursively Convert Dot Syntax Strings to Multidimensional Arrays in PHP?

如何在PHP 中透過點語法創建多維數組

在PHP 中,轉換點語法(如“this.that.other” ) )轉換為多維數組對於組織資料來說可能是一項有用的任務。以下是完成此轉換的方法:

使用遞歸函數:

以下函數 allocateArrayByPath() 可以遞歸地導航點語法並建立多維數組:

function assignArrayByPath(&$arr, $path, $value, $separator='.') {
    $keys = explode($separator, $path);

    foreach ($keys as $key) {
        $arr = &$arr[$key];
    }

    $arr = $value;
}

怎麼樣運作原理:

  1. 函數有四個參數:

    • $arr:要修改的多維數組。
    • $path:點語法表示所需鍵結構的路徑。
    • $value:分配給最終值的值key.
    • $separator:(可選)點語法中使用的分隔符號(預設.)
  2. explode() 函數將路徑拆分為單獨的鍵。
  3. 此函數迭代每個鍵,使用引用來修改陣列中的適當元素$arr。
  4. 如果某個鍵不存在,則會建立該鍵並將其指派給 $arr 引用。
  5. 最後,將 $value 指派給陣列中的最後一個鍵。

範例:

將點語法「s1.t1.column.1」轉換為多維數組,使用下列程式碼:

$source = [];
assignArrayByPath($source, 's1.t1.column.1', 'size:33%');

echo $source['s1']['t1']['column']['1']; // Outputs: 'size:33%'

這個方法提供了一種靈活的遞歸方法,用於將複雜的點語法轉換為PHP 中的多維數組,確保即使不存在的鍵也會自動建立。它對於將嵌套資料結構解析為結構化數組格式特別有用。

以上是如何在 PHP 中將點語法字串遞歸轉換為多維數組?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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