PHP数组范围 - 检索最低和最高

时间:2015-10-18 13:50:36

标签: php arrays

我正在使用一个显示一系列价格的PHP数组,其中单个项目的形式为"价格从价格到"。这是数组的一个例子:

List<AB> abs = astream.flatMap(a -> a.bs.map(b->new AB(a,b)))
                      .collect(Collectors.toList());

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

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

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

3 个答案:

答案 0 :(得分: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);

答案 1 :(得分: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;

答案 2 :(得分: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) );        
}