如何在PHP中设置深度数组

Rya*_*yan 6 php

假设我有以下功能

function setArray(&$array, $key, $value)
{
    $array[$key] = $value;     
}
Run Code Online (Sandbox Code Playgroud)

在上面的功能中,键只在第一级,如果我想在第二级或第三级设置键,如何重写该功能呢?

例如

 $array['foo']['bar'] = 'test';
Run Code Online (Sandbox Code Playgroud)

我想使用相同的函数来设置数组值

Mar*_*ant 13

这应该工作.使用此函数,您可以通过传递包含分隔的键的单个字符串来设置任何深度的任何数组元素.

function setArray(&$array, $keys, $value) {
  $keys = explode(".", $keys);
  $current = &$array;
  foreach($keys as $key) {
    $current = &$current[$key];
  }
  $current = $value;
}
Run Code Online (Sandbox Code Playgroud)

您可以按如下方式使用:

$array = Array();
setArray($array, "key", Array('value' => 2));
setArray($array, "key.test.value", 3);
print_r($array);
Run Code Online (Sandbox Code Playgroud)

输出:

Array (
    [key] => Array
        (
            [value] => 2
            [test] => Array
                (
                    [value] => 3
                )

        )

)
Run Code Online (Sandbox Code Playgroud)