我想搜索一个多维数组并返回找到的第一个键的值。例如,我正在使用一些地理工具,它会返回这个数组。如何递归地遍历这个数组并返回名称为 lat 的任何键的第一个值?我试过 array_walk 但这似乎只是返回真或假。我尝试了array_filter,但我认为这不是它的用途吗?但我不知道该数组将有多少个子数组,所以我需要它遍历每个数组集,直到找到我要查找的键,返回值并完成。
array(4) {
["bounds"]=>
array(2) {
["northeast"]=>
array(2) {
["lat"]=>
float(37.8468559)
["lng"]=>
float(-121.891768)
}
["southwest"]=>
array(2) {
["lat"]=>
float(37.779857)
["lng"]=>
float(-122.027307)
}
}
["location"]=>
array(2) {
["lat"]=>
float(37.8215929)
["lng"]=>
float(-121.9999606)
}
["location_type"]=>
string(11) "APPROXIMATE"
["viewport"]=>
array(2) {
["northeast"]=>
array(2) {
["lat"]=>
float(37.8468559)
["lng"]=>
float(-121.891768)
}
["southwest"]=>
array(2) {
["lat"]=>
float(37.779857)
["lng"]=>
float(-122.027307)
}
}
}
这是一个使用 array_filter 的示例。它只有在我回显该值时才有效,但我想返回该值以在不同的时间使用它。但是当我返回时,它会返回整个子数组:
function getLat($k,$v)
{
if(is_array($k)){
foreach($k AS $key => $value)
{
if($key == 'lat')
{
echo $value;
}
}}
}
$test = array_filter($response,'getLat',ARRAY_FILTER_USE_BOTH);
这与 37.8215929 相呼应。这是我想要的,但想退货。当我将 echo 更改为返回时,它会返回:
array(1) {
["location"]=>
array(2) {
["lat"]=>
float(37.8215929)
["lng"]=>
float(-121.9999606)
}
}