Динамически изменять значения ассоциативного массива в php

Предположим, что у меня есть массив вроде следующего:

$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); 

print_r($new_array) должен возвращать следующее:

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

Это изменение должно быть полностью динамическим , что означает, что data.zip_code = "98985" также должно изменить только значение zip-кода от 00000 до 98985 и так далее …

Related of "Динамически изменять значения ассоциативного массива в php"

Вот динамический набор funciton, вы можете использовать его для установки любой глубины. Демо здесь для вас вопрос.

 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; } 
 $settings = array( "age" => "25", "data" => array( "name" => "John Dewey", "zip_code" => "00000" ) ); $new_value = "Micheal"; $settings["data"]["name"] = $new_value; print_r($settings); 
 //In your main function public function something() { $settings = array( "age" => "25", "data" => array( "name" => "John Dewey", "zip_code" => "00000" ) ); $target = 'data.name'; $input = 'Other Name' $new_arr = dont_know_what_to_do($target_dir, $input); print_r($new_arr); } //Create new function public function dont_know_what_to_do($settings, $target, $input) { $key = explode('.', $target) return $settings['data'][$key[1]] = $input; }