将字符串数组转换为多维数组

时间:2014-03-26 10:27:14

标签: php arrays string multidimensional-array

我继承了一个项目,我通过API请求传递了一个字符串,如下所示:

$return = "state|city|street";

现在我需要将其转换为一个读取

的数组
$value = "abcd"; //gets passed by user input
$result['state']['city']['street'] = $value;

传递的字符串可以包含任意数量的嵌套,我不会事先知道密钥的名称。唯一总是相同的是分隔符。

我的前任实现的解决方案是爆炸字符串并构建一个新字符串,然后eval()表示字符串:

$return = explode('|',$return);
$value = "abcd"; //gets passed by user input

$arrayString = '$result';
foreach($return as $key)
{
    $arrayString .= "['".$key."']";
}

$arrayString .= '="'.$value.'";' ;
eval($arrayString);

我确信有一个简单而且更好的方法可以解决这个问题,但我太傻了,不能看到它:/ 任何提示将不胜感激:))

1 个答案:

答案 0 :(得分:1)

是的,在@Jack下建议我这样做了:

$str = "state|city|street";

$result = array();

$node = &$result;

foreach(explode("|", $str) as $v)
{
    $node = &$node[$v];
}

var_dump($result);  

array (size=1)
    'state' => 
        array (size=1)
            'city' => 
                array (size=1)
                    'street' => &null