Поймай новую сотню в цикле - PullRequest
0 голосов
/ 23 октября 2011

Я получил список номеров автобусов в моей базе данных.Пример здесь:

    route_id,route_short_name,route_long_name,route_type,route_color,route_text_color
    1,1,Victoria / Churchill,3,A32638,FFFFFF
    2,2,Tiffin / St-Georges,3,A32638,FFFFFF
    99,99,Saint-Bruno,3,A32638,FFFFFF
    100,100,Ile-Des-Soeurs,3,A32638,FFFFFF
    106,106,Secteur B / Victoria,3,A32638,FFFFFF
    199,199,Seigneurial / Grand Boulevard,3,A32638,FFFFFF
    818,T18,Taxi - Aéroport,3,A32638,FFFFFF
    893,T93,Taxi - De Mortagne - Du Boisé - Ch. De Touraine,3,A32638,FFFFFF

Мы будем работать с route_id (первый столбец).

Вот мой вопрос.Как я могу поймать новую сотню?Ожидаемые результаты сверху будут

    1 to 99
    100 to 199
    818 to 893

Я почти всегда нахожу ответ на свой вопрос, но на этот раз .. Я действительно не знаю.Я сделал это, но это не работает:

# Creating the array
$Routes = array();
$Quick = array();

# Array launching
$F_D = -1;
$i=0;
while($Assoc_Routes = mysql_fetch_assoc($Query_Routes)){
    # Array
    $Routes[] = $Assoc_Routes;

    $Digit_Length = strlen($Assoc_Routes['route_short_name']);
    switch($Digit_Length){
        case 1 : $Digit = '00'.$Assoc_Routes['route_id'][0]; break;
        case 2 : $Digit = '0'.$Assoc_Routes['route_id'][0]; break;
        default: $Digit = $Assoc_Routes['route_id'][0]; break;
    }

    if($Digit[0] != $F_D){
        # Count
        $i++;

                    # Avoid the first one
        if($i > 1){
            $Quick[$i-1]['g'].= ' à '.($Assoc_Routes['route_id']-1);
        }
        $Quick[$i] = array('g' => 'Groupement '.$Assoc_Routes['route_id']);
    }
    $F_D = $Digit[0];
}

Спасибо за любую помощь.

Ответы [ 2 ]

1 голос
/ 23 октября 2011

Создайте новую переменную, которая отслеживает, в какой группе вы находитесь:

$currentGroup = 0;
$groupSize = 100;

Затем сравните ваш route_id с currentGroup, чтобы увидеть, находится ли он в ее groupSize:

if ($Assoc_Routes['route_id'] >= $currentGroup+$groupSize && $groupSize != 0) 
{
    //update the value for your currentGroup
    $currentGroup = floor($Assoc_Routes['route_id']/$groupSize)*$groupSize;
}
0 голосов
/ 23 октября 2011

Не уверен, в какой форме вы хотите получить вывод, но вот подход, который я бы выбрал:

while ($r = mysql_fetch_object...
  $index = floor($r->route_id / 100);

  $groups[$index][] = $r;
...