我有一个存储在变量中的数组值的'路径',我试图设置该值。我试图做的是这样的:从变量更新数组
$array['Breaks'][1]['In'] = "XXX";
但是,我有['Breaks'][1]['In']
存储在一个变量。所以我基本上是试图做这样的事情:
$path = "['Breaks'][1]['In']";
$array.$path = "XXX";
这不工作,虽然,我不完全知道如何去正确地做这项工作。
有什么建议吗?
我有一个存储在变量中的数组值的'路径',我试图设置该值。我试图做的是这样的:从变量更新数组
$array['Breaks'][1]['In'] = "XXX";
但是,我有['Breaks'][1]['In']
存储在一个变量。所以我基本上是试图做这样的事情:
$path = "['Breaks'][1]['In']";
$array.$path = "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);
谢谢!简单,有效,就像我问的那样。它 – Devin
不客气! –
尝试将$ path变量的每个组件抽取到它自己的变量中,或者抽取到一个数组中($ pathArray below)。所以,如果你有$ pathArray [0]设置为“游”,$ pathArray [1]设置为1,等等,你可以这样做:
$array[$pathArray[0]][$[pathArray[1]][$[pathArray[2]] = "XXX";
虽然这似乎是一个不寻常的路要走关于事情,可能值得重新考虑你的方法。
只要路径字符串不是由用户修改或通过解析之前,你可能只是这样做:
eval("\$array".$path." = 'Value';");
你可以尝试解析'$ path',然后遍历解析的值来设置值。 –
为什么你在变量中有'['Breaks'] [1] ['In']'?相关:http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem – PeeHaa
我正在使用AJAX动态更新大型数组中的值。它发布数据,并将其发布到我的更新脚本中,以便能够选择和修改数据。 – Devin