簡體   English   中英

根據條件從數組中獲取最小/最大值

[英]Get min/max value from array based on condition

$array = [ [ 'Name' => 'Product 1', 'Quantity' => 0, 'Price' => 70  ], 
           [ 'Name' => 'Product 2', 'Quantity' => 2, 'Price' => 100 ],
           [ 'Name' => 'Product 3', 'Quantity' => 2, 'Price' => 120 ] ];

echo min( array_column( $array, 'Price' ) ); // 70

它確實得到了我的min價格,但我也想檢查數量,在這種情況下100將是最低的。

有沒有循環的優雅方式來做到這一點?

array_filter來救援!

在檢查min之前,從數組中刪除Quantity設置為0的元素。

echo min( array_column( array_filter($array,function($v) { 
return $v["Quantity"] > 0; }), 'Price' ) ); 

使其更具可讀性

$filtered=array_filter($array,function($v) { return $v["Quantity"] > 0; });
echo min( array_column( $filtered, 'Price' ) );

小提琴

還有一個沒有所有封閉的舊式版本

foreach($array as $v)
{
   if($v["Quantity"]>0 && (!$min || $v["Price"]<$min))
   $min=$v["Price"];
}

小提琴

您需要使用array_filter()過濾掉數量為0的數組索引。

$filtered_array = array_filter($array, function($v) {
    return $v['Quantity'];
});

echo min( array_column( $filtered_array, 'Price' ) );
    $array = [[ 'Name' => 'Product 1', 'Quantity' => 0, 'Price' => 70], 
             ['Name' => 'Product 2', 'Quantity' => 2, 'Price' => 100],
             ['Name' => 'Product 3', 'Quantity' => 2, 'Price' => 120]];

    $price=array();

    for($i=0; $i<count($array);$i++){
      $price[$i]=$array[$i]['Price'];  
    }

    echo  min($price); //70

暫無
暫無

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

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