我知道这个问题的答案类似于上一个问题。我已经尝试了解决方案,但似乎无论我尝试过哪种方式,我仍然无法使其工作。我不确定我的编码结构在某处是错误的。
目前它将结果显示为:
Cafes (Category)
Starbucks
Cafes (Category)
CoffeeBean
但我希望它显示:
Cafes (Category)
Starbucks
CoffeeBean
以下是我的代码:
<?php
$levelArray=array('L1','B1','L2','B2');
foreach ($levelArray as $i=>$level) {
$data='';
$img = "img/".$levelArray[$i];
$result = mysqli_query($con,"SELECT * FROM floor_directory WHERE level='$levelArray[$i]'");
while($row = mysqli_fetch_array($result)){
$data .= '<h1>'.$row['categories'].'</h1>
<ul class="shop_listing clearfix">
<li class="float_left">'.$row['name'].'</li>
<li class="float_right">'.$row['unit_number'].'</li>
</ul>';
}
echo '<div class="swiper-slide">
<img src="'.$img.'" alt="" />
<div class="content_container">'.$data.'</div>
</div>'
}
?>
任何帮助将不胜感激。提前谢谢。
答案 0 :(得分:1)
$previousVal = "";
while($row = mysqli_fetch_array($result)){
if($previousVal != $row['categories']){
$data .= '<h1>'.$row['categories'].'</h1>
$previousVal = $row['categories'];
}
$data .= '<ul class="shop_listing clearfix">
<li class="float_left">'.$row['name'].'</li>
<li class="float_right">'.$row['unit_number'].'</li>
</ul>';
}
尝试这个。
答案 1 :(得分:0)
好吧,每当您回复商店名称时,类别也会回显,因为您同时打印$row['categories']
和$row['name']
。
要解决此问题,您可能需要将其分开,可能是通过添加Jon提到的处理步骤将同一类别中的所有商店组合在一起,并仅回显一次类别。
$allCategories = array(); $data='';
while($row = mysqli_fetch_array($result)){
if(!array_search($row['categories'],$allCategories)){
array_push($allCategories,$row['categories']);
$data .= "<h1>{$row['categories']}</h1>";
}
$data.= '<ul class="shop_listing clearfix">
<li class="float_left">'.$row['name'].'</li>
<li class="float_right">'.$row['unit_number'].'</li>
</ul>';
}