-1

如何找到最大值,返回唯一具有最大值的数字

这是我的代码:

<?php 
foreach($graphData as $gt) {
    echo $gt['pView'].',';
}
?>

结果:

0,0,0,18,61,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 

我尝试这样的事情

<?php
    $str = '';
        foreach ($graphData as $gt){
            $str = array($gt['pView'],);}
            $max =max($str);
            if($max == 0){echo '20';}
                else
            {echo $max +20;}
?>

结果始终为20,但应为 106 + 20

我的代码有什么问题?

4

3 回答 3

3

示例代码存在严重问题。第一个是缩进,在修复之后我们有

foreach ($graphData as $gt){
    $str = array($gt['pView'],);
}

很明显,这并不会真正做任何事情,因为它会不断重置$str为数组中的一个值,同时又不做任何其他事情(另外,为什么要将数组分配给名为 的变量$str?)。

解决方案是一个简单的迭代案例:

$max = reset($gt);
foreach ($gt as $item) {
    $max = max($item['pView'], $max);
}

echo "Final result = ".($max + 20);

还有更可爱的写法,例如

$max = max(array_map(function($item) { return $item['pView']; }, $gt));

或者如果您使用的是 PHP 5.5

$max = max(array_column($gt, 'pView'));
于 2013-08-06T16:40:04.400 回答
1

尝试这个:

$arr = array();
foreach ($graphData as $gt) {
    array_push($arr, $gt['pView']);
}
$max = max($arr);
if ($max === 0) {
    $max = 20;
}
else {
    $max += 20;
}
echo $max;

如PHP 文档中max()所见,该函数max可以接受单个值数组作为参数。如果是这种情况,它会返回数组中的最大值。

于 2013-08-06T16:39:19.300 回答
0

你可以做:

sort($grafdata);
if($grafdata == 0) {
    echo '20';
} else {
    echo $grafdata + 20;
}
于 2013-08-06T16:41:41.237 回答