首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

PHP 依字串路徑建立多層陣列實作

     編輯:PHP 綜合知識

將 'project|page|index' => 'content' 形式的扁平陣列,轉換為巢狀結構 ['project'=>['page'=>['index'=>'content']]]。

輸入與預期輸出

// 輸入
$config = array(
    'project|page|index' => 'content',
    'project|page|nav' => array( array('image'=>'1.jpg','name'=>'home'), array('image'=>'2.jpg','name'=>'about') ),
    'project|page|open' => true
);
// 輸出
$result = array(
    'project' => array(
        'page' => array(
            'index' => 'content',
            'nav' => array(...),
            'open' => true
        )
    )
);

實作函式

function buildNestedArray($flat){
    $nested = array();
    foreach($flat as $path => $value){
        $keys = explode('|', $path);
        $ref = &$nested;
        foreach($keys as $key){
            if(!isset($ref[$key])) $ref[$key] = array();
            $ref = &$ref[$key];
        }
        $ref = $value;
    }
    return $nested;
}

說明

  • 使用參考 &$ref 逐層建立/進入子陣列。
  • 適用於任意深度路徑。
  • 同一路徑後出現的值會覆蓋前值。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved