如何找到最大值,返回唯一一个具有最高值的数字
这是我的代码:
<?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
我的代码出了什么问题?
答案 0 :(得分: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'));
答案 1 :(得分: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 documentation for max()
所示,函数max
可以接受单个数组值作为参数。如果是这种情况,它将返回数组中的最大值。
答案 2 :(得分:0)
你可以这样做:
sort($grafdata);
if($grafdata == 0) {
echo '20';
} else {
echo $grafdata + 20;
}