如果在字段中重复数据,则PHP显示一次

时间:2013-10-30 09:49:16

标签: php mysqli

我知道这个问题的答案类似于上一个问题。我已经尝试了解决方案,但似乎无论我尝试过哪种方式,我仍然无法使其工作。我不确定我的编码结构在某处是错误的。

目前它将结果显示为:

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>'

        }

     ?>

任何帮助将不胜感激。提前谢谢。

2 个答案:

答案 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>';

        }