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