PHP에 불규칙한 단계 범위에 대한 기존 기능이 있습니까?이 기능을 제공하는 일반적인 솔루션이 있습니까? 아니면 다음 기능을 최적화 할 수 있습니까?불규칙한 단계로 범위 생성. 최적화
첫 번째 기능은 내가 염려하는 기능입니다. 두 번째 함수는 HTML에 대한 선택 드롭 다운을 출력하는 함수의 값을 채우는 배열을 생성하는 실제 사용 사례입니다.
<?php
function range_multistep($min, $max, Array $steps, $jmp = 10) {
$steps = array_unique($steps);
sort($steps, SORT_NUMERIC);
$bigstep = ($jmp > 0) ? $jmp : $jmp * -1;
$e = ($min > 0) ? floor(log($min, $bigstep)) : 0;
for (; ; $e++) {
foreach ($steps as $step) {
$jump = pow($bigstep, $e);
$num = $step * $jump;
if ($num > $max) {
break 2;
} elseif ($num >= $min) {
$arr[] = $num;
}
}
}
$arr = array_unique($arr);
sort($arr, SORT_NUMERIC);
return $arr;
}
function prices() {
$price_steps = range_multistep(50, 100000, array(5, 10, 25));
$prev_step = 0;
foreach ($price_steps as $price) {
$price_str = '$' . $prev_step . ' - $' . ($price - 1);
$price_arr[] = $price_str;
$prev_step = $price;
}
$price_arr[] = '$' . end($price_steps) . "+";
return $price_arr;
}
print_r(prices());
이전의 결과 :
Array
(
[0] => $0 - $49
[1] => $50 - $99
[2] => $100 - $249
[3] => $250 - $499
[4] => $500 - $999
[5] => $1000 - $2499
[6] => $2500 - $4999
[7] => $5000 - $9999
[8] => $10000 - $24999
[9] => $25000 - $49999
[10] => $50000 - $99999
[11] => $100000+
)
최소/최대 값을 기준으로 범위를 생성하고 해당 배열을 잠시 동안 foreach를 통해 실행하는 것이 더 좋을까요? –