簡體   English   中英

PHP從數組和關聯的行數據中獲取最小值?

[英]PHP Get min value from array and associated row data?

我有一個包含以下數據的數組,我試圖找到價格最低的列,然后獲取關聯的行數據(庫存和供應商)的值,我設法獲得了最低的價格,但不確定如何獲取庫存和供應商(任意區域)的關聯行數據。 謝謝

$productdata=array
(
    array('Price'=>$row['price1'],'Stock'=>$row['stock1'],'Supplier'=>$row['supplier1']),
    array('Price'=>$row['price2'],'Stock'=>$row['stock2'],'Supplier'=>$row['supplier2']),
    array('Price'=>$row['price3'],'Stock'=>$row['stock3'],'Supplier'=>$row['supplier3'])
    );
$filtered_array = array_filter($productdata, function($v) {
return $v['Price'];});

$minprice= min( array_column( $filtered_array, 'Price') );
 print_r($minprice); 

不使用排序或循環的解決方案:

獲取數組中的所有價格,然后獲取最低價格的鍵

$prices = array_column($productdata, 'Price');
$min_price = min($prices);
$key = array_search($min_price, $prices);

輸出匹配的行:

$match = $productdata[$key];
echo '<pre>' . print_r($match, true) . '</pre>';

說明文件:

首先按升序對數組進行排序,然后將第一個元素設為最低。

$filtered_array=array
(
    array('Price'=>100,'Stock'=>1000,'Supplier'=>'Kapil'),
    array('Price'=>50,'Stock'=>500,'Supplier'=>'Kapil2'),
    array('Price'=>200,'Stock'=>2000,'Supplier'=>'Kapil3')
    );

 for($i = 0; $i < count($filtered_array); $i++ ) {
    for($j = $i+1; $j< count($filtered_array); $j++ ) {

        if($filtered_array[$i]['Price'] > $filtered_array[$j]['Price']) {
            $temp = $filtered_array[$j];
            $filtered_array[$j] = $filtered_array[$i];
            $filtered_array[$i] = $temp;
        }
    }
 }
 print_r($filtered_array[0]);

您可以使用usort按價格升序對數組進行排序。 價格最低的數組將成為第一項$productdata[0]

usort($productdata, function($a, $b) {
    return $a['Price'] > $b['Price'];
});

echo $productdata[0]["Stock"];

暫無
暫無

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

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