Я рекомендую вам не использовать динамические переменные, такие как ${$var}
.Вам нужно изменить многомерный ассоциативный массив в соответствии с путем ключей.
<?php
$myArray = array(...); // multi-dimensional array
$myVarPath = array('my1', 'my11', 'my111');
setValueFromPath($myArray, $myVarPath);
function getValueFromPath($arr, $path)
{
// todo: add checks on $path
$dest = $arr;
$finalKey = array_pop($path);
foreach ($path as $key) {
$dest = $dest[$key];
}
return $dest[$finalKey];
}
function setValueFromPath(&$arr, $path, $value)
{
// we need references as we will modify the first parameter
$dest = &$arr;
$finalKey = array_pop($path);
foreach ($path as $key) {
$dest = &$dest[$key];
}
$dest[$finalKey] = $value;
}
Это процедурный пример, чтобы упростить его.Возможно, вы захотите поместить свой иерархический массив и эти функции внутри класса.