0

我有一个存储在变量中的数组值的“路径”,我正在尝试设置该值。我想做的是:

$array['Breaks'][1]['In'] = "XXX";

但是,我已经['Breaks'][1]['In']存储在一个变量中。所以我本质上是在尝试做这样的事情:

$path = "['Breaks'][1]['In']";
$array.$path = "XXX";

但这不起作用,我不完全确定如何使这项工作正常工作。

有什么建议么?

4

3 回答 3

2

只要用户无法修改路径字符串或以前无法解析路径字符串,您就可以这样做:

eval("\$array".$path." = 'Value';");
于 2012-11-02T21:14:07.133 回答
1

尝试将 $path 变量的每个组件提取到它自己的变量中,或者提取到一个数组中(下面的 $pathArray)。因此,如果您将 $pathArray[0] 设置为“Breaks”,将 $pathArray[1] 设置为 1,等等,您可以执行以下操作:

$array[$pathArray[0]][$[pathArray[1]][$[pathArray[2]] = "XXX";

尽管这似乎是一种不寻常的处理方式,但可能值得完全重新考虑您的方法。

于 2012-11-02T20:26:25.220 回答
1

尝试这样做,

//This solution works if you are sure the length of $path_arr is going to be 3
$path = "['Breaks'][1]['In']";
$path_arr = explode(']', str_replace(array("['", "'", "["), '', $path)); 

$array[$path_arr[0]][$path_arr[1]][$path_arr[2]] = "XXX";
var_dump($array);

演示

于 2012-11-02T20:30:51.277 回答