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)
这是一个保持简单的程序示例.您可能希望将分层数组和此函数放在类中.