我有以下数组:
$people['men'] = [
'first_name' => 'John',
'last_name' => 'Doe'
];
我有以下平面数组:
$name = ['men', 'first_name'];
现在我想创建一个函数,它“读取”平面数组,并根据平面数组元素的顺序从多维数组中获取值。
function read($multidimensionalArray,$flatArray){
// do stuff here
}
echo read($people,$name); // must print 'John'
这有可能实现吗?哪种方式才是正确的呢?我真的为此伤透了脑筋。我完全不知道如何开始。
提前谢谢。
发布于 2018-07-13 06:11:20
这应该是关键:
<?php
$people['men'] = [
'first_name' => 'John',
'last_name' => 'Doe'
];
$name = ['men', 'first_name'];
echo read($people,$name);
function read($multidimensionalArray,$flatArray){
$cur = $multidimensionalArray;
foreach($flatArray as $key)
{
$cur = $cur[$key];
}
return $cur;
}
一定要在里面放一些错误检查(isset
之类的)
发布于 2018-07-13 06:24:52
您可以使用递归函数来执行此操作。
function read(&$array, $path) {
// return null if one of the keys in the path is not present
if (!isset($array[$key = array_shift($path)])) return null;
// call recursively until you reach the end of the path, then return the value
return $path ? read($array[$key], $path) : $array[$key];
}
echo read($people, $name);
发布于 2018-07-13 06:31:58
您还可以使用array_reduce
$val = array_reduce($name, function($carry, $item) {
return $carry[$item];
}, $people);
https://stackoverflow.com/questions/51315138
复制相似问题