我有一个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的所有行均应为奇数,以此类推?
答案 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
输出似乎遵循奇/偶规则,没有您提到的异常...