2015-09-23 90 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