我有一个存储在变量中的数组值的“路径”,我正在尝试设置该值。我想做的是:
$array['Breaks'][1]['In'] = "XXX";
但是,我已经['Breaks'][1]['In']
存储在一个变量中。所以我本质上是在尝试做这样的事情:
$path = "['Breaks'][1]['In']";
$array.$path = "XXX";
但这不起作用,我不完全确定如何使这项工作正常工作。
有什么建议么?
只要用户无法修改路径字符串或以前无法解析路径字符串,您就可以这样做:
eval("\$array".$path." = 'Value';");
尝试将 $path 变量的每个组件提取到它自己的变量中,或者提取到一个数组中(下面的 $pathArray)。因此,如果您将 $pathArray[0] 设置为“Breaks”,将 $pathArray[1] 设置为 1,等等,您可以执行以下操作:
$array[$pathArray[0]][$[pathArray[1]][$[pathArray[2]] = "XXX";
尽管这似乎是一种不寻常的处理方式,但可能值得完全重新考虑您的方法。
尝试这样做,
//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);