2015-10-18 63 views
0

我正在使用一个显示价格范围的PHP数组,其中单个项目的格式为“price from-price to”。这里的数组的例子: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,彻底难倒项目然后获得最低/最高值。

+1

不要用美元符号存储您的值,而且我会创建一个多维数组,例如, 'Array(Array([min] => [max] =>),...)' – Rizier123

+0

不幸的是我无法控制阵列的格式 - 它来自外部源,我无法更改 – user982124

+1

然后外部来源很糟糕。拆分这些值将删除美元符号并重新排列您的数组结构。 – Rizier123

回答

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

试试这个:

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

请参阅下面的代码。

将第一个值分解为数组,然后删除“$”,然后将值转换为整数。然后将值添加到数组,最后调用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));   
}