【问题标题】:PHP Array of Price Ranges - Retrieve the lowest and highestPHP 价格范围数组 - 检索最低和最高
【发布时间】:2016-01-16 20:55:27
【问题描述】:

我正在使用一个显示价格范围的 PHP 数组,其中单个项目的形式为“价格从价格到”。这是数组的一个示例:

Array
(
[0] => $625,000-$700,000
[1] => $550,000-$625,000
[2] => $1,000,000-$1,250,000
[3] => $925,000-$1,000,000
)

我现在需要检索数组中的最低和最高价格,但是由于它们是一个范围,我首先需要将每个数组项中的每个价格分开。例如使用上面的数组,我希望能够返回如下内容:

$minPrice = 550000;
$maxPrice = 1250000;

我是 PHP 新手,在这一点上完全不知道如何解析每个数组项中的每个值,然后获取最低/最高值。

【问题讨论】:

  • 不要用美元符号存储你的值,我也会创建一个多维数组,例如Array(Array([min] => [max] => ), ...)
  • 很遗憾,我无法控制数组的格式 - 它来自我无法更改的外部来源
  • 那么外源很烂。拆分值会删除美元符号并重新排列您的数组结构。

标签: php arrays


【解决方案1】:

我会将所有标准化的价格放在一个数组中,并使用 php 的 max、min 函数。

<?php

$ranges = array(
 "$625,000-$700,000",
 "$550,000-$625,000",
 "$1,000,000-$1,250,000",
 "$925,000-$1,000,000",
);

$prices = array();
foreach ($ranges as $range) {
    $prices = array_merge($prices, explode("-", preg_replace("/[\\$,]/i", "", $range)));
}

$maxPrice = max($prices);
$minPrice = min($prices);

【讨论】:

    【解决方案2】:

    试试这个:

     $array = Array
                (
                 0 => '$625,000-$700,000',
                 1 => '$550,000-$625,000',
                 2 => '$1,000,000-$1,250,000',
                 3 => '$925,000-$1,000,000',
                );
    
        $tmp = array(); 
    
        foreach($array as $key=>$value){
            $cleanValue =  explode('-', str_replace(array('$',','), array('',''), $value));
            foreach($cleanValue as $k=>$v){
                $tmp[] = $v;
            }
    
        }
    
    
    
        $minValue = min($tmp);
        $maxValue = max($tmp);
    
        echo $minValue .  ' '. $maxValue;
    

    【讨论】:

      【解决方案3】:

      请参考下面的代码。

      第一个值被分解为一个数组,然后删除“$”,然后将值转换为整数。然后将值添加到数组中,最后调用 min / max 函数。

      $maxPrice = 0;
      $max_curr = 0;
      $price_arr = array();
      
      foreach($min_maxs as $min_max){
      
          $min_max_arr = explode("-",$min_max); // string to array
      
          array_walk($min_max_arr,"remove_dollar_commas"); // remove "$"
      
          $price_arr = array_merge($price_arr , $min_max_arr ); // add to final array
      
      }        
      
      $maxPrice = max($price_arr); // call max function to get maximum value
      $minPrice = min($price_arr); // call min function to get minimum value
      
      function remove_dollar_commas(&$subject){
          $subject = intval( str_replace(array("\$",","), "", $subject) );        
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-08-13
        • 1970-01-01
        • 2020-10-02
        • 2019-05-29
        • 1970-01-01
        • 1970-01-01
        • 2023-03-14
        相关资源
        最近更新 更多