大家都知道您可以使用以下命令在PHP中访问变量:${‘varName’}.但是,当您需要获取/设置变量witch是数组的一部分时,为什么它不起作用?假设我们有这段代码:
$myArray = array(...);
$myVarName = "myArray['my1']['my11']['my111']";
${$myVarName} = "new value";
?>
不行吗?
我已经对其进行了一次又一次的测试-它无法正常工作.
有办法吗?
解决方法:
我建议您不要使用动态变量,例如${$var}.
您想要的是根据键的路径修改多维关联数组.
$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;
}
这是一个简单的过程示例.您可能需要将分层数组和此函数放在类中.
标签:php,arrays,variables
来源: https://codeday.me/bug/20191012/1897073.html