使用键数组在多维数组中设置值

Rob*_*rle 6 php arrays multidimensional-array

关于这个问题,我之前提到过:使用另一个数组搜索多维数组的键

我想要一种在多维数组中设置值的方法(最多6级),使用包含要使用的键的单独数组.

例如

$keys = Array ('A', 'A2', 'A22', 'A221');
$cats[A][A2][A22][A221] = $val;
Run Code Online (Sandbox Code Playgroud)

我试着写一个笨拙的开关但收效甚微......是否有更好的解决方案?

function set_catid(&$cats, $keys, $val) {
    switch (count($keys)) {
        case 1: $cats[$keys[0]]=$val; break;
        case 2: $cats[$keys[0]][$keys[1]]=$val; break;
        case 3: $cats[$keys[0]][$keys[1]][$keys[2]]=$val; break;
        etc...
    }
}
Run Code Online (Sandbox Code Playgroud)

Kai*_*aii 1

尝试这个:

function set_catid(&$cats, $keys, $val) {
  $ref =& $cats;
  foreach ($keys as $key) {
    if (!is_array($ref[$key])) {
      $ref[$key] = array();
    }
    $ref =& $ref[$key];
  }
  $ref = $val;
}
Run Code Online (Sandbox Code Playgroud)