生成嵌套数组

I wrote a method to generate nested array from an array of keys.

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

Usage:

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

Expected:

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

But get as empty array. What's wrong???

Try this instead

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

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