让我们说我有一个像这样的多维数组:
$array = array(
'first' => array(
'second' => array(
'last1' => array(
'key1' => 'value1',
'key2' => 'value2',
),
'last2' => array(
'key3' => 'value3',
'key4' => 'value4',
),
),
),
);
要检索子数组key1
的键last1
的值,我会使用:
$value = $array['first']['second']['last1']['key1'];
// Output value1
在我的实际用例中,我需要从以下字符串中检索key1
的值:
$param = 'first.second.last1.key1';
我按顺序将它转换为一个键数组:
$keys = explode('.', $param);
// Output array('first', 'second', 'last1', 'key1')
要在爆炸键之后检索值,我使用以下方法:
function get_value_from_keys(array $array, array $keys) {
$lastKey = $keys[count($keys) - 1];
foreach ($keys as $key) {
$newArray = $newArray[$key];
if ($key == $lastKey) {
break;
}
}
return $newArray;
}
get_value_from_keys($array, $keys);
// Output value1
但是现在,我需要设置值,问题是:
如何在不对密钥进行硬编码的情况下动态更改key1
的值?
在不循环播放数组的情况下,我不能使用与get_value_from_keys
相同的逻辑。