PHP从数组和关联的行数据中获取最小值?

时间:2018-06-22 11:04:59

标签: php arrays multidimensional-array

我有一个包含以下数据的数组,我试图找到价格最低的列,然后获取关联的行数据(库存和供应商)的值,我设法获得了最低的价格,但不确定如何以获取库存和供应商(任意区域)的关联行数据。谢谢

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

3 个答案:

答案 0 :(得分:3)

不使用排序或循环的解决方案:

获取数组中的所有价格,然后获取最低价格的键

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

文档:

答案 1 :(得分:1)

首先按升序对数组进行排序,然后将第一个元素设为最低。

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

答案 2 :(得分:0)

您可以使用usort按价格升序对数组进行排序。价格最低的数组将成为第一项$productdata[0]

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

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

Example