簡體   English   中英

php從循環結果中獲取MIN和MAX

[英]php get MIN and MAX from loop results

我有這個循環,我想知道如何在循環內獲取MIN和MAX值:

foreach($result_1 as $key_1) {

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

}

結果: 234

想要的結果是MIN(2)和MAX(4)個值

對於功能約方法來說,這聽起來不錯。 您可以使用array_reduce函數在PHP中執行此array_reduce

您傳入一個數組,一個回調和一個起始值,該函數將使用當前值和數組中的下一個項目調用該回調並存儲結果。

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作為回調,並將第一個數組項用作起始值。

為了在數組上正確使用此函數,您可以使用匿名函數傳入自定義回調:

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

您只需要遍歷數組一次,並對照當前的最小值/最大值檢查每個值,如果值較小/較大,則將其替換。

$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;

只需使用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;

您可以采用選擇排序的邏輯,並使用它來找到最小值。 我確定您可以從此代碼中找出如何找到最大值。

$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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM