请问php如何快速的根据字符串进行数组访问.
程序员文章站
2022-06-08 09:34:06
...
如:
$array=>[
'a'=>[
'b'=>[
'name'=>'张三'
]
]
];
请问如何实现下方的访问方式.
$arrayNode = ['a','b','name'];
//请问如何根据 $arrayNode 变量来实现
$array{$arrayNode}='李四';//这样php会报错.
// $array['a']['b']['name']='李四'; 类似这样的效果呢?
print($array{$arrayNode});
//李四
谢谢.
回复内容:
如:
$array=>[
'a'=>[
'b'=>[
'name'=>'张三'
]
]
];
请问如何实现下方的访问方式.
$arrayNode = ['a','b','name'];
//请问如何根据 $arrayNode 变量来实现
$array{$arrayNode}='李四';//这样php会报错.
// $array['a']['b']['name']='李四'; 类似这样的效果呢?
print($array{$arrayNode});
//李四
谢谢.
$arrayNode = ['a','b','name'];
$array=[
'a'=>[
'b'=>[
'name'=>'张三'
]
]
];
echo $array[array_shift($arrayNode)][array_shift($arrayNode)][array_shift($arrayNode)];
你想要的可能是
$arrayNode = ['a','b','name'];
$array[array_shift($arrayNode)][array_shift($arrayNode)][array_shift($arrayNode)] = "李四";
是这样吗?
修改答案
$pointer = &$array;
$found = true;
foreach ($arrayNode as $key) {
if (isset($pointer[$key])) {
$pointer = &$pointer[$key];
} else {
$found = false;
break;
}
}
if ($found) {
$pointer = '李四';
}
长是长了点,不过适应性应该还可以。