php从循环结果中获取MIN和MAX

时间:2014-02-13 01:03:28

标签: php loops foreach

我有这个循环,我想知道如何在循环中获得MIN和MAX值:

foreach($result_1 as $key_1) {

if($key_1->ordering > $key_0->ordering ) {
echo $key_1->ordering;
}

}

结果: 234

结果要求MIN(2)和MAX(4)值

4 个答案:

答案 0 :(得分:3)

对功能性 reduce 方法来说,这听起来不错。您可以使用array_reduce函数在PHP中执行此操作:

传入一个数组,一个回调和一个起始值,该函数将使用当前值和数组中的下一项调用回调并存储结果。

php> $array = [ 6, 2, 8, 4 ];
array (
  0 => 6,
  1 => 2,
  2 => 8,
  3 => 4,
)
php> array_reduce($array, 'min', reset($array));
int(2)
php> array_reduce($array, 'max', reset($array));
int(8)

在这个例子中,我分别使用minmax作为回调,第一个数组项作为起始值。

为了在您的阵列上正确使用此功能,您可以使用anonymous function传递自定义回调:

function ($a, $b) {
    return max($a->ordering, $b->ordering);
}

答案 1 :(得分:2)

您只需要遍历数组一次,并根据当前最小值/最大值检查每个值,如果它更小/更大,则替换它。

$min = reset( $array )->ordering; // Assign any value to start (just the first in this case)
$max = reset( $array )->ordering; // Assign any value to start (just the first in this case)
foreach ( $array as $object ) {
  //max
  if( $object->ordering > $max ) {
    $max = $object->ordering;
  }

  //min
  if( $object->ordering < $min ) {
    $min = $object->ordering;
  }
}

echo $min;
echo $max;

答案 2 :(得分:1)

只需使用PHP内置的min($result_1)max($result_1)函数。

http://us2.php.net/max http://us2.php.net/min

编辑:

由于它是一个对象数组,请尝试使用两个临时变量来跟踪最小值和最大值。我在这段代码中假设您正在寻找最大和最小订购。

$min = 1000000;
$max = -1000000;
foreach($result_1 as $key_1) {
    if($key_1->ordering > $max ) {
       $max = $key_1->ordering;
    }
    else if($key_1->ordering < $min) {
       $min = $key_1->ordering;
    }
}

echo $min;
echo $max;

答案 3 :(得分:0)

您可以采用selection sort的逻辑并使用它来查找最小值。我相信你可以从这段代码中找出如何找到最大值

$min = 0;
foreach($result_1 as $key_1) {
   $min = $key_1->ordering
   foreach($result_1 as $key_2) {
     if($min > $key_2->ordering) {
       $min = $key_2->ordering;
     }
   }
}

这是我的测试:

$data = array(
    5, 
    6, 
    7, 
    1, 
    9, 
    11, 
    3
);

$min = 0;

foreach($data as $key => $value) {
    $min = $value;
    foreach($data as $key2 => $value2) {
        if($min > $value2) {
            $min = $value2;
        }    
    }
}

echo $min . "\n"; // 1