在循环中捕获新的一百个数字

时间:2011-10-22 23:45:10

标签: php mysql loops modulo

我的数据库中有一个总线编号列表。在此处示例:

    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 个答案:

答案 0 :(得分:1)

创建一个新变量来跟踪您所在的群组:

$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;
}

答案 1 :(得分:0)

不确定您希望输出的形式是什么,但这是我采取的方法:

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

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