2012-11-02 92 views
0

我有一个存储在变量中的数组值的'路径',我试图设置该值。我试图做的是这样的:从变量更新数组

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

但是,我有['Breaks'][1]['In']存储在一个变量。所以我基本上是试图做这样的事情:

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

这不工作,虽然,我不完全知道如何去正确地做这项工作。

有什么建议吗?

+0

你可以尝试解析'$ path',然后遍历解析的值来设置值。 –

+0

为什么你在变量中有'['Breaks'] [1] ['In']'?相关:http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem – PeeHaa

+0

我正在使用AJAX动态更新大型数组中的值。它发布数据,并将其发布到我的更新脚本中,以便能够选择和修改数据。 – Devin

回答

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); 

Demo

+0

谢谢!简单,有效,就像我问的那样。它 – Devin

+0

不客气! –

1

尝试将$ path变量的每个组件抽取到它自己的变量中,或者抽取到一个数组中($ pathArray below)。所以,如果你有$ pathArray [0]设置为“游”,$ pathArray [1]设置为1,等等,你可以这样做:

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

虽然这似乎是一个不寻常的路要走关于事情,可能值得重新考虑你的方法。

2

只要路径字符串不是由用户修改或通过解析之前,你可能只是这样做:

eval("\$array".$path." = 'Value';");