如何动态地为php ARRAY变量提供?

Mic*_*ael 2 php arrays variables

每个人都知道你可以使用以下方法访问PHP中的变量:$ {'varName'}.但是当你需要获取/设置变量时,巫婆是数组的一部分,为什么它不起作用?假设我们有这段代码:

<?php
   $myArray = array(...);
   $myVarName = "myArray['my1']['my11']['my111']";
   ${$myVarName} = "new value";
?>
Run Code Online (Sandbox Code Playgroud)

不应该工作吗?我一次又一次地测试它 - 它不起作用..有没有办法做到这一点?

小智 12

我建议你不要使用动态变量${$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;
}
Run Code Online (Sandbox Code Playgroud)

这是一个保持简单的程序示例.您可能希望将分层​​数组和此函数放在类中.