2015-09-23 125 views
-3

我寫了一個方法來從鍵數組生成嵌套數組。生成嵌套數組

public static function generateSubArray(array $keys) 
{ 
    foreach($keys as $key) 
    { 
     if(!isset($subArray[$key])){ 
      $subArray[$key] = []; 
     } 
     $subArray = $subArray[$key]; 
    } 
    return $subArray; 
} 

用法:

$ret = Utils::generateSubArray(['name', 'id', 'fix']); 
var_dump($ret); 

預計:

$ret = [ 
     'name' => 
      [ 
       'id' => ['fix'] 
      ] 
     ] 

,但得到的空數組。怎麼了???

+0

你覆蓋你的陣列的每一個循環:'$子陣= $子陣[$關鍵]'所以在最後,你會落得一個空數組。 – Rizier123

+0

您的預期產出是多少?帖子太 –

+0

固定文本問題 – 6yt9Bka

回答

1

試試這個

public static function generateSubArray(array $keys) 
{ 
    $subArray = []; 
    $parent =& $subArray; 

    foreach($keys as $key) 
    { 
     if(!isset($parent[$key])){ 
      $parent[$key] = []; 
     } 
     $parent =& $parent[$key]; 
    } 
    return $subArray; 
} 
+0

太好了。這對我有用。你能解釋一下細節嗎? – 6yt9Bka

+0

在您的代碼中,我們將在每次迭代中替換$ subArray。我使用$ parent作爲指向當前$ subArray節點的指針。 @ 6yt9Bka –

+1

偉大的工作,thx很多。 – 6yt9Bka