【问题标题】:Find maximum and minimum value in an array by the for loop通过for循环查找数组中的最大值和最小值
【发布时间】:2016-02-10 03:21:25
【问题描述】:

我想通过 for 循环找到最大值和最小值,但问题是当数组值从像 (100,30,50,60) 这样的最大值开始时,输出是正确的第一个最大值,最小值。

否则先输出最小值,再输出最大值。

有什么想法吗?

    //Number serial.
    $number = array(10,15,20,100,25,30);

    for ($i=0; $i<count($number); $i++){
        //Find maximum number by max function.
        if ($number[$i] == max($number)){
            //Print maximum number.
            echo " The max number is $number[$i] <br>" ;
        }
        //Find minimum number by min function.
        elseif ($number[$i] == min($number)) {
            //Print minimum  number.
            echo " The min number is $number[$i] <br>";
        }
    }
//Output: 
//The min number is 10
//The max number is 100 

当数组值从最大数开始时。

 //Number serial.
    $number = array(100,10,15,20,25,30);

    for ($i=0; $i<count($number); $i++){
        //Find maximum number by max function.
        if ($number[$i] == max($number)){
            //Print maximum number.
            echo " The max number is $number[$i] <br>" ;
        }
        //Find minimum number by min function.
        elseif ($number[$i] == min($number)) {
            //Print minimum  number.
            echo " The min number is $number[$i] <br>";
        }
    }
//Output:
//The max number is 100
//The min number is 10

【问题讨论】:

  • 为什么不直接使用sort() 而不是循环。 w3schools.com/php/php_arrays_sort.asp 其次,您可能希望将最大值和最小值保存在不同的变量中,在循环中,然后在最后回显它们。
  • 因为您已经在使用min() max()。为什么不直接删除for 循环?
  • 您能否解释一下这个问题。它似乎做了正确的行为,第二个代码块首先检查最大值,第一个元素是最大值,反过来,呼应它

标签: php arrays for-loop


【解决方案1】:

实际上我认为你不需要 for 循环开始......你可以做一些简单的事情:

$number = array(15,20,100,10,25,30);
$max = max($number);
$min = min($number);
echo "min value is $min <br/>";
echo "max value is $max <br/>";

更新:

但如果你想灵活地根据最小值和最大值的索引来回显语句,那么你可以这样做:

$number = array(15,20,100,10,25,30);
$max = max($number);
$min = min($number);
$max_idx = array_search($max,$number);
$min_idx = array_search($min,$number);
if($max_idx < $min_idx){
  echo "max value is $max \n";
  echo "min value is $min \n";
}else{
  echo "min value is $min \n";
  echo "max value is $max \n";
}

这将做的是,它将获取最小值和最大值的索引,并根据首先遇到的情况,首先打印该语句。

希望对你有帮助

【讨论】:

  • @RajDev 更新答案,现在您可以选择先打印哪个语句
【解决方案2】:

使用下面的代码。

$number = array(15,20,100,10,25,30);

for ($i=0; $i<count($number); $i++){
    //Find maximum number by max function.
    if ($number[$i] == max($number)){
        //Print maximum number.
        $max = $number[$i];
    }
    //Find minimum number by min function.
    elseif ($number[$i] == min($number)) {
    //Print minimum  number.
        $min = $number[$i];
    }
}

echo "min value is $min <br/>";
echo "max value is $max <br/>";

【讨论】:

    【解决方案3】:
    $a = [3,4,5];
    $b = $a[0];
    $c = $a[0];
    
    for ($i=0; $i < sizeof($a) ; $i++) { 
        if($a[$i] < $b){
            $b = $a[$i];
        }else if($a[$i] > $c){
            $c = $a[$i];
        }
    }
    
    echo $b;
    echo "<br>";
    echo $c;
    

    【讨论】:

      猜你喜欢
      • 2019-09-18
      • 2018-09-21
      • 1970-01-01
      • 2021-06-17
      • 2019-05-15
      • 2022-09-29
      • 2018-08-17
      • 1970-01-01
      • 2016-06-07
      相关资源
      最近更新 更多