更新多维数组中的任何值

时间:2019-06-03 23:27:12

标签: php arrays multidimensional-array

我正在尝试更新多维数组中的值(使用函数以便可以动态完成),但是我遍历每个值的方法似乎不起作用。我尝试了在stackoverflow上提供的不同解决方案,但我仍然无法使它作为功能(带有动态键)工作。这是一个带有2级数组的简单示例,但它可以在任何级别上使用。

function updateArrayValue($array,$key_to_find,$new_value){
  foreach($array as $key => $value){
    if($key == $key_to_find){
      $value = $new_value;
      break; // Stop the loop
    }
  }
  return $array;
}

$array = array("001"=>"red", "002"=>"green", "003"=>array("003-001"=>"blue", "003-002"=>"yellow"));

$array = updateArrayValue($array,"003-001","purple");
var_dump($array);

1 个答案:

答案 0 :(得分:1)

您需要递归调用函数并设置新值。不仅有价值,而且更改了深度数组。

  function updateArrayValue($array,$key_to_find,$new_value){
      foreach($array as $key => $value){
        // if value is not an array then try set new value if is search key
        if(!is_array($value)){
            if($key == $key_to_find) {
                $array[$key] = $new_value;
            }
        }
        else {
            // otherwise call function again on value array
            $array[$key] = updateArrayValue($value, $key_to_find, $new_value);
        }
      }
      return $array;
    }

    $array = array(
      "001"=> "red",
      "002"=> "green", 
      "003"=> array(
         "003-001"=> "blue",
         "003-002"=> "yellow"
      ));

    $newArray = updateArrayValue($array,"003-001","purple");
    var_dump($newArray);