LINUX.ORG.RU

на основе https://stackoverflow.com/questions/13308968/create-infinitely-deep-multidime...

$arr = array();

function setArrValue($a, $key, $value) {
  if (FALSE=== ($levels=explode('/',$key)))
    return;
  $pointer = &$a;
  for ($i=0; $i<sizeof($levels); $i++) {
    if (!isset($pointer[$levels[$i]]))
      $pointer[$levels[$i]]=array();
    $pointer=&$pointer[$levels[$i]];
  } // for
  $pointer=$value;
  return $a;
}

$b = setArrValue($arr, 'db/yum/user','val');
print_r($b);
$c = setArrValue($arr, 'db/yum/server','val2');
print_r($c);

print_r($arr);

либо setArrValue(&$a, ... чтоб как в оригинале в исходном массиве сохранять, тогда ещё return $a лишним будет. и будет все значения в один массив собирать, без надобности мержить возвращаемые массивы.

dab18
()