在PHP中动态修改关联数组值 [英] Dynamically modify associative array values in php

查看:37
本文介绍了在PHP中动态修改关联数组值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

让我们假设我有一个如下数组:

Let's assume that I have an array like following:

$settings = array(
    "age" => "25",
    "data" => array(
            "name" => "John Dewey",
            "zip_code" => "00000"
        )
);

这是我的输入内容:

$target_directory = "data.name";    // targets $settings["data"]["name"]
$new_value = "Micheal";    // I want to change 
                           // $settings["data"]["name"] with this value

我想要类似以下内容:

$new_array = dont_know_what_to_do($target_directory, $new_value, $settings);

A print_r($ new_array)应该返回以下:

Array
(
    [age] => 25
    [data] => Array
        (
            [name] => Micheal,
            "zip_code" => "00000"
        )

)

更改应该是完全动态的,这意味着数据.zip_code = 98985 还应该仅将邮政编码值从00000更改为98985,依此类推...

The change should be totally dynamic, meaning that data.zip_code = "98985" should also change only the zip code value from 00000 to 98985, and so on...

推荐答案

这里是动态设置功能,您可以使用它设置任何深度。 在此处演示 ,以供您提问。

Here is the dynamic set funciton, you can use it set any depth. Demo here for you question.

function set($settings, $target_directory, $new_value)
{
  $array = explode('.', $target_directory);
  $ref = &$settings;
  while($v = current($array))
  {
    $ref = &$ref[$v];
    next($array);
  }
  $ref = $new_value;
  return $settings;
}

这篇关于在PHP中动态修改关联数组值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆