【问题标题】:Can't change a value inside a php list无法更改 php 列表中的值
【发布时间】:2011-03-24 05:42:15
【问题描述】:

我有以下 php 循环,它接受一个包含一组数组的数组。我使用此代码将每个数组转换为列表,以便更好地操作元素。

这是我的代码...

while ($i<sizeof($my_array)){
    while(list($key,$val) = each($my_array[$i])){
      $j = $i+1;
        if ($key == "fruit"){
          $val = "ananas".$j;
          echo $val;
        }
     } 
 $i++;
 }

当我打印“搜索”数组(print_r($my_array)) 时,值不会改变。我不明白为什么这不像我预期的那样工作。有没有办法在不改变循环结构和逻辑的情况下修改$val

【问题讨论】:

    标签: php arrays list


    【解决方案1】:

    each() 不会将数据作为引用传递,也不会对循环进行太多修改:

        if ($key == "fruit"){
          $val = "ananas";
          echo $val;
          $my_array[$i][$key] = $val;
        }
    

    当然,有更好的方法来做到这一点。但是你想要一个不改变循环结构的答案。

    【讨论】:

      【解决方案2】:

      $val 是 $my_array[$i] 中包含的数据的副本,而不是实际数据。更改数组中的数据:

      while ($i<sizeof($my_array)){ 
          while(list($key,$val) = each($my_array[$i])){ 
            $j = $i+1; 
              if ($key == "fruit"){ 
                $my_array[$i][$key] = "ananas"; 
                echo $my_array[$i][$key]; 
              } 
           }  
       $i++; 
       } 
      

      而且使用 foreach 循环可能更容易

      【讨论】:

        【解决方案3】:

        使用foreach作为参考:

        $i = 0;
        foreach ( $my_array as $key => &$val ) {
            ++$i;
            if ($key == "fruit"){
                $val = "ananas" . $i;
                echo $val;
            }
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-10-17
          • 2015-03-20
          • 2021-12-28
          • 2018-10-16
          • 2011-05-30
          • 1970-01-01
          • 2021-12-14
          • 1970-01-01
          相关资源
          最近更新 更多