分配给任意深度的数组索引?

Aus*_*yde 5 php arrays

如果我有一个数组对应于另一个数组中的连续递归键,那么将值赋给该"路径"的最佳方法是什么(如果你想称之为)?

例如:

$some_array = array();
$path = array('a','b','c');
set_value($some_array,$path,'some value');
Run Code Online (Sandbox Code Playgroud)

现在,$some_array应该是平等的

array(
  'a' => array(
    'b' => array(
      'c' => 'some value'
)))
Run Code Online (Sandbox Code Playgroud)

目前,我正在使用以下内容:

function set_value(&$dest,$path,$value) {
  $addr = "\$dest['" . implode("']['", $path) . "']";
  eval("$addr = \$value;");
}
Run Code Online (Sandbox Code Playgroud)

显然,这是一种非常天真的方法并且存在安全风险,那么你将如何做呢?

mol*_*arm 2

递归解决方案(未测试):

 function set_value(&$dest,$path,$value) {
      $index=array_shift($path);
      if(empty($path)){
        // on last level
        $dest[$index]=$value;
      }
      else{
        // descending to next level
        set_value($dest[$index],$path,$value);
      }
    }
Run Code Online (Sandbox Code Playgroud)