Php 是否可以通过在字符串中传递多维数组的坐标,为比第一个数组更深的层设置多维数组的新值?

Php 是否可以通过在字符串中传递多维数组的坐标,为比第一个数组更深的层设置多维数组的新值?,php,arrays,multidimensional-array,Php,Arrays,Multidimensional Array,下面的代码示例更好地说明了我的问题: <?php $array['a']['b']['c'] = 'value of c'; $coordinates_for_c_key = "['a']['b']['c']"; $array{$coordinates_for_c_key} = 'new value of c'; print $array{$coordinates_for_c_key}; // Output: new value of c 以下是一个如何完成的示例: <?

下面的代码示例更好地说明了我的问题:

<?php

$array['a']['b']['c'] = 'value of c';

$coordinates_for_c_key = "['a']['b']['c']";

$array{$coordinates_for_c_key} = 'new value of c';

print $array{$coordinates_for_c_key};

// Output: new value of c

以下是一个如何完成的示例:

<?php

$arr['a']['b']['c'] = 'value of c';
$coordinates_for_c_key = "['a']['b']['c']";

function set_array_value(&$arr, $key, $val) {
  eval("\$arr".$key." = '".$val."';");
}

print_r($arr);
set_array_value($arr, $coordinates_for_c_key, "new value of c");
print_r($arr);

?>

为什么不只存储值“a”、“b”和“c”?使用
eval
几乎可以将任何表达式用作字符串,但速度会很慢。为什么要这样做?