【问题标题】:PHP update associative arrayPHP更新关联数组
【发布时间】:2026-02-04 03:15:01
【问题描述】:

我希望只更新我在 PHP 中创建的关联数组中的 ["distanceTimeFromNextPoint"] 元素。

我正在尝试更新以下数组结构:

Array 
( 
  [0] => Array 
  ( 
    [Total time] => 0:00 
    [0] => Array 
    ( 
      [place] => Spanish steps  
      [distanceTimeFromNextPoint] =>  
    ) 
    [1] => Array 
    ( 
      [place] => Piazza Venezia 
      [distanceTimeFromNextPoint] =>  
    ) 
  ) 
  [1] => Array 
  ( 
    [Total time] => x0:00 
    [0] => Array  
    ( 
      [place] => Piazza Venezia 
      [distanceTimeFromNextPoint] => 
    ) 
    [1] => Array 
    ( 
      [place] => Spanish steps 
      [distanceTimeFromNextPoint] => 
    ) 
  ) 
)

但是当我运行这个循环时,["Total time"] 元素也会更新! 关于我的循环出了什么问题以及如何更改它的任何想法?

这是我的代码(上面的数组定义为$new_array):

foreach($new_array as $i=>$element)
{
    foreach($element as $j=>$sub_element)
    {         
         $new_array[$i][$j]['distanceTimeFromNextPoint']="x";
    }
}

提前谢谢你。

【问题讨论】:

    标签: php arrays foreach associative-array


    【解决方案1】:

    如果我的结构正确,只需添加一个条件,即排除该键并检查该元素是否具有所需的子键,然后进行修订:

    foreach($new_array as $i => $element) {
        foreach($element as $j => $sub_element) {
            if($j !== 'Total time' && array_key_exists('distanceTimeFromNextPoint', $sub_element)) {
                $new_array[$i][$j]['distanceTimeFromNextPoint'] = 'x';
            }
        }
    }
    

    Sample Output

    【讨论】:

    • @user2828251 很高兴这有帮助
    【解决方案2】:

    您应该测试元素“distanceTimeFromNextPoint”是否已经存在。

    if (is_array($new_array[$i][$j]) && array_key_exists('distanceTimeFromNextPoint', $new_array[$i][$j])) 
    {
        // you can update it
    }
    

    【讨论】:

    • 我得到的错误是:警告:array_key_exists() 期望参数 2 是数组,字符串在
    • 如果元素是数组,您应该使用 is_array 函数添加我将编辑我的响应