请帮助我使用此website中的自定义选择宏。将起始值小于结束值时,此代码正常工作。
Form::macro('selectRangeWithDefault', function($name, $start, $end, $selected = null, $default = null, $attributes = [])
{
if ($default === null) {
return Form::selectRange($name, $start, $end, $selected, $attributes);
}
$items = [];
if (!in_array($default, $items)) {
$items[''] = $default;
}
if($start > $end) {
$interval = -1;
$startValue = $end;
$endValue = $start;
} else {
$interval = 1;
$startValue = $start;
$endValue = $end;
}
for ($i=$startValue; $i<$endValue; $i+=$interval) {
$items[$i . ""] = $i;
}
$items[$endValue] = $endValue;
return Form::select($name, $items, isset($selected) ? $selected : $default, $attributes);
});
当从起始值添加大于值且在结束值中添加更少时,它会中断。请帮我解决这个代码的问题
答案 0 :(得分:0)
如果您的起始值大于您的结束值,则设置'start = end'和'end = start'。如果你想(需要)从开始循环到结束值,你需要每次增加'1'。但是,如果将间隔设置为“-1”,并且从startvalue(现在小于endvalue)开始,则循环将永远不会停止。
变化
if($start > $end) {
$interval = -1;
$startValue = $end;
$endValue = $start;
到
if($start > $end) {
$interval = 1;
$startValue = $end;
$endValue = $start;
让它发挥作用。
编辑:解释