我试图在 PHP 中对 while 循环的输出进行分组。
我想要实现的是,我希望将具有相同“exposure
”的每个“框”组合在一起,然后每当一个新框具有一个新的“exposure
' 来了,应该出现一个换行符,下一组曝光应该分组。
目前,我有这个 PHP 代码:
//Select from advertisements.
global $dbh;
$r = $dbh->prepare("
SELECT * FROM advertisements
WHERE exposure!='0'
AND `status`='2'
AND (clicks_left_micro>0
OR clicks_left_mini>0
OR clicks_left_standard>0
OR clicks_left_extended>0
OR fixed='1')
ORDER BY exposure DESC, fixed DESC");
$r->execute();
$last = null;
while($row=$r->fetch(PDO::FETCH_ASSOC)){
$exposure = $row['exposure'];
switch ($exposure) {
case 1:
$type = "";
break;
case 2:
$type = "ads-orange";
break;
case 3:
$type = "ads-green";
break;
case 4:
$type = "ads-blue";
break;
}
if ($row['token'] != $last) {
echo '
<a href="#">
<div class="col-xs-4 ads-box '.$type.'">
<div class="title">'.$row['title'].'</div>
<div class="content">'.$row['description'].'</div>
</div>
</a>
';
$last = $row['token'];
}
}
上面的代码,会像这样打印出来:
https://docs.google.com/file/d/0Bw9EQNU6ms6jUXVyY1pndVlpY2c/edit?usp=drivesdk
虽然,我想要的是这样的:
https://docs.google.com/file/d/0Bw9EQNU6ms6jU0JYaDlHWEZsN1k/edit?usp=drivesdk
我怎样才能做到这一点?
最佳答案
我会制作一个包含所有“曝光”的数组。
$dataArray = array();
foreach ($result as $value){
$dataArray[$value['exposure']][] = $value;
}
这将生成一个数组($dataArray),其中包含您在各自索引中的所有曝光类别。
现在您可以遍历每个“曝光”:
foreach ($dataArray as $exposure => $value){
echo 'Exposure: '.$exposure.'<br/>';
foreach ($value as $item){
// Any item information here.
}
echo '<hr>';
}
关于php - 如何在 while 循环中对项目进行分组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20395034/