2015-10-18 103 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));   
}