嵌套数组中的内部最大值

时间:2014-04-04 22:28:16

标签: php arrays

我想在不使用foreach的情况下获取最内层数组的值。如何在没有循环的情况下获得$ f5和$ v5的值? .................................................. ..........................................

<?php
// json_arrays.php
//
$json1 = '{"upload":[{"email":"jd@gmail.com","deviceid":"1234567",
"crecs":[{"id":"RUS","name":"Russa"},
{"id":"AUS","name":"Austria"},
{"id":"USA","name":"United States"}]}]}';
//
echo "<br> ------- <br>";
var_dump(json_decode($json1, true));
echo "<br> ------- <br>";
var_dump(json_decode($json1));
echo "<br> ------- <br>";
$a1 = json_decode($json1, true);
//
foreach ($a1 as $f1 => $v1) {
if ($f1 == "upload") {
    $a2 = $v1;
    foreach ($a2 as $f2 => $v2) {
        $a3 = $v2;
        foreach ($a3 as $f3 => $v3) {
            echo "key: ".$f3."<br>";
            echo "value: ".$v3."<br>";
            if ($f3 == "crecs") {
                $a4 = $v3;
                echo " ------- <br>";
                echo  "[vardump a4]"."<br>";
                var_dump($a4);
                echo "<br> ------- <br>";
                foreach ($a4 as $f4 => $v4) {
                    $a5 = $v4;
                    foreach ($a5 as $f5 => $v5) {
                        echo "key: ".$f5."<br>";
                        echo "value: ".$v5."<br>";
                    }
                }
            }
        }
    }
}
}
?>

1 个答案:

答案 0 :(得分:2)

您可以尝试递归执行此操作。 Haven没试过,但我认为这个为你做了。

function get_last_child_recursive($array)
{
    if(is_array(end($array))
        return get_last_child_recursive(end($array));
    else
        return array('last_value'=>end($array),'last_key'=>key($array));

}

由于子数组是每个父元素的最小元素,因此您可以使用end()来检查该元素是否为数组(如果是 - recurse) - 如果不返回数组中的最后一个值和最后一个键。必须首先返回通知值,以将指针移动到数组的末尾以返回正确的键(more info on that)。 Haven没有测试过这个,所以它可能不起作用,但无论如何它都是一个好的开始。