How to create Price Range dynamically with PHP
php, range
Solution
I Created this function based on my $array element of my question.
If this is a good aproach of my question please make some comments for like pointing my mistakes.
http://laravel.io/bin/VLJn this is the output.
private function createRange($array){
sort($array);
//Setting range limits.
//Check if array has 5 digit number.
$countDigitedNumbers = preg_grep('/\d{5}/',$array);
if(count($countDigitedNumbers) > 3){
$rangeLimits = array(0,1000,2500,5000,10000,15000,20000,25000);
}else{
$rangeLimits = array(0,50,250,500,1000,1500,2000,2500);
}
$ranges = array();
for($i = 0; $i < count($rangeLimits); $i++){
if($i == count($rangeLimits)-1){
break;
}
$lowLimit = $rangeLimits[$i];
$highLimit = $rangeLimits[$i+1];
$ranges[$i]['ranges']['min'] = $lowLimit;
$ranges[$i]['ranges']['max'] = $highLimit;
foreach($array as $perPrice){
if($perPrice >= $lowLimit && $perPrice < $highLimit){
$ranges[$i]['values'][] = $perPrice;
}
}
}
return $ranges;
}
Problem
How can I create Price Ranges from price array? Let's say I have this array which holds prices: ``` Array ( [0] => 500 [1] => 500 [2] => 520 [3] => 540 [4] => 551 [5] => 599 [6] => 601 [7] => 601 [8] => 650 [9] => 681 [10] => 750 [11] => 750 [12] => 851 [13] => 871 [14] => 871 [15] => 900 [16] => 990 [17] => 999 [18] => 1101 [19] => 1130 [20] => 1149 [21] => 1151 [22] => 1278 [23] => 1300 [24] => 1460 ) ``` Minimum value is = 500 and maximum value is 1460. I need to show users like this : ``` [x] 500-750 (11) [x] 750-1000 (8) [x] 1000+ (7) ``` the tricky part is if values are reached 1500 or there are more than 1500 above needs look like this : ``` [x] 500-750 (11) [x] 750-1000 (8) [x] 1000-1500 (n) [x] 1500+ (if more than 1500 but not reached 2000). ``` we can say 1500 is the limit but if there are prices between 1500$ and 2000$ and more than 2000$ like 2300$ , 2400$ , 2499$, 2000$+ must be the limit. which will look like this: ``` [x] 500-750 (11) [x] 750-1000 (8) [x] 1000-1500 (n) [x] 1500-2000 (n) [x] 2000$+ (n) ``` This will create 5 range. As you can see lowest price is 500, but min. prices may 20$ or 120$ so function must not break 5 range rule. first range can be 20$-750$ (n). And of course max prices may not 1000$+ so may need to show something like this : ``` [x] 25-50 (11) [x] 50-100(8) [x] 100-200(n) [x] 200-400(n) [x] 400+ (n) ``` I hope I make this proper. There are many conditions and I don't know the usages of pow or range like functions in php. Hope you can help :/