我的第一个递归函数没有正确调用自身?

时间:2014-02-13 07:20:54

标签: php arrays

这段代码应该找到一个组的最高值,无论有多少嵌套数组。我第一次尝试创建一个每次事件发生时都会调用自身的函数,即值是一个数组。为什么说我的变量没有定义?

<?php
    $arr = array("1", "2", array("3", "4"));

    function getitMax($arr){
        foreach ($arr as $value){
            if(is_array($value)){
                getitMax($value);
            } else {
                $max_array=array($value);
            }
        }
    }
    getitMax($arr);

    echo max($max_array);
?>

2 个答案:

答案 0 :(得分:1)

你的问题是你只是在这里调用你的功能:

if(is_array($value)){
        getitMax($value);

}

- 但没有做任何事情的结果。此外,您的函数没有return - 即结果为null。要解决此问题,请执行以下操作:

function  getitMax($arr)
{
    $max = null;
    foreach($arr as $value)
    {
        if(is_array($value))
        {
            $current = getitMax($value);
        }
        else 
        {
            $current = $value;
        }
        //assign max to current if current is larger:
        if($current>$max)
        {
           $max = $current;
        }
    }
    return $max;
}

答案 1 :(得分:0)

尝试下面的代码可能有点冗长的方法:

<?php   
class GetMax {
    private $max_array = '';
    public function getitMax($arr){     
        foreach ($arr as $value){
            if(is_array($value)){
                $this->getitMax($value);
            } else {
                $this->max_array[] = $value;
            }
        }       
        return max($this->max_array);
    }
}

$m = new GetMax();
$arr = array("1", "2", array("3", "4"));
echo $m->getitMax($arr);
?>