我正在开发一个看起来像这样的函数:
public function myfunction($mainArr, $keys) {
// $mainArr: a nested associative array
// $keys: a simple array of strings, example: array('string_1', 'string_2', 'string_3')
$totalKeys = count(keys);
if(totalKeys == 1) {
return mainArr[keys[0]];
} else if(totalKeys == 2) {
return mainArr[keys[0]][keys[1]];
} else if(totalKeys == 3) {
return mainArr[keys[0]][keys[1]][keys[2]];
} else if(totalKeys == 4) {
return mainArr[keys[0]][keys[1]][keys[2]][keys[3]];
} else if(totalKeys == 5) {
return mainArr[keys[0]][keys[1]][keys[2]][keys[3]][keys[4]];
}
// the same pattern continues..
}
我想将此功能更改为更具动态性的功能,而不是“if”条件的大列表,是否可能以某种方式?
答案 0 :(得分:1)
你可以这样做:
function get_value(array $source, array $keys) {
foreach ($keys as $key) {
if (isset($source[$key])) {
$source = $source[$key];
}
else {
return null;
}
}
return $source;
}
如果$keys
在$source
中描述了无效路径,则会返回null
。