【问题标题】:Update array from variable从变量更新数组
【发布时间】:2012-11-02 20:20:45
【问题描述】:

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

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

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

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

但这不起作用,而且我不确定如何正确地进行此操作。

有什么建议吗?

【问题讨论】:

  • 您可以尝试解析$path,然后循环遍历解析的值来设置值。
  • 为什么变量中有['Breaks'][1]['In']?相关:meta.stackexchange.com/questions/66377/what-is-the-xy-problem
  • 我正在使用 AJAX 动态更新大型数组中的值。它发布数据,并将其发布到我的更新脚本中,以便能够选择和修改数据。
  • 呃。为什么你又在变量中有['Breaks'][1]['In']
  • ...所以我的脚本可以更新该值?

标签: php arrays variables


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    尝试这样做,

    //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

    【讨论】:

    • 谢谢!正如我所要求的那样,简单且有效。欣赏它。
    【解决方案3】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-06-09
      • 2021-11-23
      • 1970-01-01
      • 2019-07-13
      • 2013-09-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多