【问题标题】:get cheap price with min() from array从数组中使用 min() 获得便宜的价格
【发布时间】:2017-06-04 03:16:36
【问题描述】:

我使用 min() 从数组中获取最便宜的价格,但它显示的是昂贵的而不是便宜的。我还需要从便宜的价格数组中获取所有数据。

代码

 $dumpData = array();

  if ( !empty($dumpData) && is_array($dumpData) ) {

    $minPriceArray = min($dumpData['data']);

    $price = $func->convert_amount($minPriceArray['currency'],   get_currency(), $minPriceArray['price']);
    echo '<span class="price"><small>From</small> '.$price.' '.get_currency().'</span>';

  }else{
    echo '<span class="price">No data found</span>';
  }

数组

 array(4) {
   [0]=>
   array(8) {
     ["logo"]=>
     ["price"]=>
     int(649)
     ["currency"]=>
     string(3) ""
     ["availability"]=>
     string(7) "instock"
   },
   [1]=>
   array(8) {
     ["logo"]=>
     ["price"]=>
     int(849)
     ["currency"]=>
     string(3) ""
     ["availability"]=>
     string(7) "instock"
   },
   [2]=>
   array(8) {
   ...
   },
   [3]=>
   array(8) {
   ...
   }

 }

【问题讨论】:

  • 您是否对整个数组(带有子数组)实施min()
  • $min = min(array_column($array, 'price'));
  • 也许值得注意的是,array_column 仅在版本 5.5 之后可用。对上面的代码 sn-p 感到困惑 - 最初声明 $dumpData = array(); 然后检查 if ( !empty($dumpData) &amp;&amp; is_array($dumpData) ) { ???
  • RramRaider,来自DB的数据是数组或字符串

标签: php arrays min


【解决方案1】:
function find_min_price_array($arr) {
    $prices = array_column($arr, 'price');
    $min_price = min($prices);

    $min_price_array = array();

    foreach($arr as $key => $value) {
        if($value['price'] == $min_price) {
            $min_price_array[] = $value;
        }
    }

    return $min_price_array;
}

var_dump(find_min_price_array($arr));

用户自定义函数find_min_price_array 返回包含最低价格的数组。它还返回包含相同最低价格的数组。

array_column 返回多维数组中某一列的所有值。 array_column($arr, 'price') 获取数组中的所有价格,然后您可以使用 min 函数轻松找到最小值。然后,您可以在循环中对照多维数组中每个数组的价格检查最低价格。

希望对你有帮助!

【讨论】:

  • @Anant 完全没问题。您的代码完美运行。他需要的额外的事情是获得包含最低价格的数组。他不仅要提取最低价格,还要提取与价格相关的数组。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-11
  • 1970-01-01
  • 1970-01-01
  • 2019-08-30
  • 2018-10-12
相关资源
最近更新 更多