Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在PHP中是否可以获得多个最大值?_Php_Max - Fatal编程技术网

在PHP中是否可以获得多个最大值?

在PHP中是否可以获得多个最大值?,php,max,Php,Max,我知道如何在PHP中找到最大值 $max = max($var); 但当它有多个最大值时,它只显示一个值。但是我怎么能得到不止一个值呢 示例:(7,5,8,8,4,7,6) 如何使“8”和“8”都显示出来?如果您不关心项目的索引,那么这将起作用: $biggest = max($var); $totalOfEach = array_count_values($var); $totalBiggest = $totalOfEach[$biggest]; $arrayOfBiggest = arr

我知道如何在PHP中找到最大值

 $max = max($var);
但当它有多个最大值时,它只显示一个值。但是我怎么能得到不止一个值呢

示例:(7,5,8,8,4,7,6)


如何使“8”和“8”都显示出来?

如果您不关心项目的索引,那么这将起作用:

$biggest = max($var);
$totalOfEach = array_count_values($var);
$totalBiggest = $totalOfEach[$biggest];
$arrayOfBiggest = array_fill(0, $totalBiggest, $biggest);
如果您确实关心项的索引,则需要进行筛选,而不是重建数组:

$biggest = max($var);
$filter = function ($value) use ($biggest) { return $biggest === $value; };
$filteredArray = array_filter($var, $filter);
您可以选择第二个,因为代码更少。。。但这涉及到迭代每一个可能代价高昂的var项目。

尝试以下方法:

<?php
$arr=array(7,5,8,8,4,7,6);
$str=getMultipleMax($arr);
echo rtrim($str, ',');
function getMultipleMax($arr){
    $max=$arr[0];
    $maxstr=array();
    foreach($arr as $values){
        if($values > $max){
            $max=$values;
            $maxstr ="";
            $maxstr .=$values.",";
        }else if($values == $max){
            $maxstr .=$values.",";
        }
    }
    return $maxstr;
}
尝试,例如:

<?php

$input = [7,5,8,8,4,7,6];
$countValues = array_count_values($input);
$max = max($input);

print('Max: ' . $max) . PHP_EOL;
print('count[max]:' . $countValues[$max]) . PHP_EOL;
print_r($countValues);
为什么不先查看列表,然后使用以获取下一个最大值:

$results = array(7,5,8,8,4,7,6);
sort($results);

$first = array_pop($results);
$second = array_pop($results);

您可以简单地使用
array\u filter
如下

$arr = [7,5,8,8,4,7,6];
$max = max($arr);
$result = array_filter($arr,function($v)use($max){ return $v == $max;});
print_r($result);
输出

Array
(
    [2] => 8
    [3] => 8
)

这是我的设备代码

说明:最大值超过一个时打印多个结果

<?php
$test=8; //Var
$results = array(7,5,8,$test,8,4,7,6); //Array
sort($results); //Sort

if(max($results)==$test){ //If Max equal to '8'
echo " You're Engineer ";
$first = array_pop($results);


if(max($results)==$first){//If I have another '8'
    echo " or ";
echo " You're Programmer ";
$second = array_pop($results);

if(max($results)==$second){ //If I have another '8' again
        echo " or ";
echo " Scientist ";}

}

}
?>


展示这两个8的好处是什么?例如:我确实对未来的大学教师提出了疑问。有些人可能有两个结果。例如,你的个性可以学习计算机工程或计算机科学,因为他们的最终分数相等。我使用你的方法,发现它更适合我的项目:)