【问题标题】:Convert array of strings into a multidimensional array [duplicate]将字符串数组转换为多维数组[重复]
【发布时间】:2014-03-26 10:27:14
【问题描述】:

我继承了一个项目,通过 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);

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

【问题讨论】:

    标签: php arrays string multidimensional-array


    【解决方案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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-13
      • 2012-11-17
      相关资源
      最近更新 更多