我有以下内容:
$values = Array (
['level1'] => Array (
['level2'] => Array(
['level3'] => 'Value'
)
)
)
我还有一系列键:
$keys = Array (
[0] => 'level1',
[1] => 'level2',
[2] => 'level3'
)
我希望能够使用$ keys数组,因此我可以提出:$ values ['level1'] ['level2'] ['level3']。级别和键名称的数量将发生变化,因此我需要一个解决方案来读取我的$ keys数组,然后遍历$ values,直到得到最终值。
你可以迭代$values
并存储像这样的$ref
:
$ref = $values ;
foreach ($keys as $key) {
if (isset($ref[$key])) {
$ref = $ref[$key];
}
}
echo $ref ; // Value
您还可以使用引用(&
)来避免数组的复制:
$ref = &$values ;
foreach ($keys as &$key) {
if (isset($ref[$key])) {
$ref = &$ref[$key];
}
}
echo $ref ;
<?php
$values['level1']['level2']['level3'] = 'Value';
$keys = array (
0 => 'level1',
1 => 'level2',
2 => 'level3'
);
$vtemp = $values;
foreach ($keys as $key) {
try {
$vtemp = $vtemp[$key];
print_r($vtemp);
print("<br/>---<br/>");
}
catch (Exception $e) {
print("Exception $e");
}
}
希望这可以帮助。当然删除print
语句,但我尝试了它,最后它达到了值。直到它达到它不断击中阵列的值,一次更深一层。