假设我有一个多维数组,就像这样:
<?php
$array = array("test1" => array("test2" => array("test3" => 1)), ... foo1 = array("foo2" => 2));
?>
我想通过传递字符串(如"test1.test2.test3"
)来访问数组元素,该函数反过来调用该数组元素。我可以通过用[]
(调用$array["test2]["test3"]
…)替换字符串来使用eval()
,但我想知道是否有一种不同的更可靠的方法来调用数组元素而不遍历其所有深度或使用eval()
。
你可以使用
function get_multi($arr, $str) {
foreach (explode('.', $str) as $key) {
if (!array_key_exists($key, $arr)) {
return NULL;
}
$arr = $arr[$key];
}
return $arr;
}
Symfony为此提供了PropertyAccess组件。
PropertyAccess组件提供了使用简单字符串表示法读写对象或数组的功能。