2014-02-13 28 views
0

这段代码应该找到一个组的最高值,不管有多少嵌套数组。我第一次尝试创建一个函数,每次事件发生时都会调用它自己,那就是数组。为什么说我的变量没有定义?我的第一个递归函数调用不正确?

<?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); 
?> 
+0

您还没有发布任何代码。 –

+0

提前4秒我:) – user3291017

+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; 
} 
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); 
?>