如何在一组行的表中获得奇/偶显示?

时间:2019-05-17 07:02:13

标签: php

我有一个MySQL查询,该查询以PHP返回用户数据,并且此代码具有奇数/偶数行:

$num = 0;
$class = "";
while ($row = mysqli_fetch_array($result)){
    $class = "odd";
    if($num % 2 == 0){
        $class = "even";
    }
    $num++;
}

我该怎么做才能使一组行显示为偶数/奇数。例如,我要返回以下数据: ID /名称/产品

1/John/Car
1/John/Bike
2/Mike/Apple
3/Alex/Boat
3/Alex/House
3/Alex/Bicycle

ID为1的所有行都应为奇数,ID 2的所有行均应为偶数,ID 3的所有行均应为奇数,以此类推?

3 个答案:

答案 0 :(得分:1)

您错过了这一行$num=$row['ID'];
添加您的代码,然后它将正常工作。 下面是更新的代码:

$num = 0;
$class = "";
while ($row = mysqli_fetch_array($result)){
    $num=$row['ID'];
    $class = "odd";
    if($num % 2 == 0){
        $class = "even";
    }

}

答案 1 :(得分:1)

您需要存储最后一个ID,以查看您是否在同一个ID上。如果您使用的是其他ID,请切换课程。

$last_id = 0;
$class = "even";
while ($row = mysqli_fetch_array($result)){
  if($last_id !== $row['ID']){
    $class = ($class === "even")? "odd": "even";
    $last_id = $row['ID'];
  }
  // do stuff here
}

答案 2 :(得分:1)

如果要使用数组存储row id,则可以使用模数中的数组大小

$ids=[];
while( $row = mysqli_fetch_array( $result ) ){
    $id=$row['ID'];
    if( !in_array( $id, $ids ) ) $ids[]=$id;
    $class = count( $ids ) % 2 == 0 ? 'even' : 'odd';
}

很好奇您的结果出类拔萃。一个小例子来模拟我如何想象这个工作。由于我无法测试您的数据库数据,因此,只需一个简单的类似id的整数数组即可。为了清楚起见,我在组之间添加了空格

$rs=[23,23,23, 24,24,24, 25,26,27,28,29, 30,30,30,30,30, 33,35,66, 89,89];
$ids=[];


foreach( $rs as $id ){
    if( !in_array( $id, $ids ) ) $ids[]=$id;
    $class = count( $ids ) % 2 == 0 ? 'even' : 'odd';

    printf( '%d - %s<br />', $id, $class );
}

这将输出:

23 - odd
23 - odd
23 - odd

24 - even
24 - even
24 - even

25 - odd
26 - even
27 - odd
28 - even
29 - odd

30 - even
30 - even
30 - even
30 - even
30 - even

33 - odd
35 - even
66 - odd

89 - even
89 - even

输出似乎遵循奇/偶规则,没有您提到的异常...