我想在max
中使用array
函数找到recursive
我在互联网上找到的内容
function multimax( $id )
{
$max = $id[0];
foreach($id as $value)
{
if($value > $max)
{
$max = $value;
}
else if(is_array($value))
{
$subvalue = multimax($value);
if( $subvalue > $max )
{
$max = $subvalue;
}
}
}
return $max;
其中$id
是数组,$max
是最大值。
它工作得很好,但我不知道如何。任何人都可以帮助理解数据流
答案 0 :(得分:0)
嗯,这不是那么复杂
检查收到的每个值是否大于当前最大值
如果它不是值而是数组,则再次递归调用自身并再次测试它,然后检查递归接收的值(如果它大于父级的值)。
最后,它返回收到的最大值
如果您有一个内部数组的数组,则表示如下:[1 , 2 , [ 1 , 5 ] , 4]
max: 0
1 < 2 => max = 2
array:
arraymax = 0
0 < 1 => arraymax = 1
1 < 5 => arraymax = 5
return arraymax (5)
2 < 5 => max = 5
5 > 4 , do not change max
return Max (5)
我希望我能给你想要的答案
答案 1 :(得分:0)
更简单的事情
$data = array(1,3,5, array(-2,8,6), array(15,1,-27));
$result -INF;
array_walk_recursive(
$data,
function ($value) use(&$result) {
$result = max($value, $result);
}
);
var_dump($result);
更容易
答案 2 :(得分:0)
$max = $id[0];
//我们将数组的firt值存储为最大值,
foreach($id as $value)
//我们循环数组
if($value > $max)
{
$max = $value;
}
//如果下一个值比$ max中存储的最后一个值更高,那么我们的最大值是$ value,
else if(is_array($value))
{
$subvalue = multimax($value);
if( $subvalue > $max )
{
$max = $subvalue;
}
}
//如果$ value是一个数组,我们必须在这个数组中找到max并通过调用相同的函数将max存储在$ max中,
最后我们返回存储在$ max变量中的最大值。
我希望这可以解释一些事情:)