我正在编写一个PHP脚本,其中一个没有固定深度的多维数组。例如:
$myArray = [
'item01' => [
'section01' => [
'part01'
]
],
'item02' => [
'section02' => [
'part02' => [
'something01'
]
]
],
'item03' => [
'section03'
]
]
我有一个字符串,其中包含应更改的值的路径。例如:
$myPath = 'item02/section02/part02'
我有新值:
$myValue = 'somethingElse'
我尝试做的是按照$ myPath中设置的路径更改数组$ myArray,将值更改为$ myValue。
预期输出,以及上面的示例,将是:
$myArray = [
'item01' => [
'section01' => [
'part01'
]
],
'item02' => [
'section02' => [
'part02' => [
'somethingElse'
]
]
],
'item03' => [
'section03'
]
]
我已经尝试了几种方法,但不断对此感到难过。最后,它总是达到解决方案的核心点。橡胶鸭子也没有帮助。我知道的其他程序员也无法找到解决方案。
我希望这里的某个人至少可以提供一些新方法来研究这个问题。
PS:上面的所有内容都是伪代码,因为这个问题似乎并不是特定于语言的。
答案 0 :(得分:1)
尝试以下方法:
$myPath = 'item02/section02/part02';
$path = explode('/', $myPath);
$arr = &$myArray;
foreach($path as $key)
{
$arr = &$arr[$key];
}
$arr = "somethingElse";
var_dump($myArray);
首先使用$myPath
将array
字符串转换为explode
个键。
这使用一个简单的循环foreach
循环来使用键循环遍历数组,然后通过引用传递值来替换最深的值。 Demo Here