欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

请问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 = '李四';
}

长是长了点,不过适应性应该还可以。

相关标签: php