如何下车';foreach&x27;要在PHP中显示每个类别的3个结果?

如何下车';foreach&x27;要在PHP中显示每个类别的3个结果?,php,html,for-loop,Php,Html,For Loop,我有一个电子商务模板的代码,我正在做的开源 你能看看这个吗!商店以3行和n个数字显示!也就是说,所有的行都显示出来了 我有一段代码,从数据库中获取数据并显示存储信息 我只希望foreach仅限于3个结果。我还需要一个更多的按钮,使其与底部的“more>>”等其他商店相关 <?php if(count($this->store_list)>0){ foreach($this->store_list as $store){

我有一个电子商务模板的代码,我正在做的开源

你能看看这个吗!商店以3行和n个数字显示!也就是说,所有的行都显示出来了

我有一段代码,从数据库中获取数据并显示存储信息


我只希望foreach仅限于3个结果。我还需要一个更多的按钮,使其与底部的“more>>”等其他商店相关

  <?php 
  if(count($this->store_list)>0){
            foreach($this->store_list as $store){
            ?>
   <div id="menu">         
  <span class="cons_title fl"><a href="<?php echo PATH.'store/'.$store->title_url.'.html'; ?>"><h2><?php echo ucfirst($store->name); ?></h2></a></span>

             <div class="cons_bot fl clr">

                  <ul>
                    <li><h4><?php echo $store->address1; ?>,</h4></li>
                    <li><h4><?php echo $store->address2; ?>,</h4></li>
                    <li><h4><?php echo $store->area_name; ?>,</h4></li>
                    <li><h4><?php echo ucfirst($store->city_name); ?>,</h4></li>
                    <li><h4><?php echo $store->pin; ?></h4></li>
                    <li><h4>PH:</h4><h4><?php echo $store->phone; ?></h4></li>
                  </ul>
                  </div>   <?php
   }
       ?>

  • ,
  • ,
  • ,
  • ,
  • PH值:
更改此

foreach($this->store_list as $store){
            ?>
对此

$number_output = 0;
foreach($this->store_list as $store){
    $number_output++;
    if($number_output > 3) break;
            ?>

应在数据库查询中添加LIMIT子句:

SELECT address1, address2, area_name, city_name, pin, phone from TABLE where 1 = 1 LIMIT 3;

这将只检索3条记录,这样您就可以保持PHP不变。

在三次尝试后,为每个循环设置中断时间

<?php  
  if(count($this->store_list)>0){ 
  $ctr =1;
        foreach($this->store_list as $store){ 
          if($ctr == 3) break;
        ?> 
   <div id="menu">          
  <span class="cons_title fl"><a href="<?php echo PATH.'store/'.$store->title_url.'.html'; ?>"><h2><?php echo ucfirst($store->name); ?></h2></a></span> 

         <div class="cons_bot fl clr"> 

              <ul> 
                <li><h4><?php echo $store->address1; ?>,</h4></li> 
                <li><h4><?php echo $store->address2; ?>,</h4></li> 
                <li><h4><?php echo $store->area_name; ?>,</h4></li> 
                <li><h4><?php echo ucfirst($store->city_name); ?>,</h4></li> 
                <li><h4><?php echo $store->pin; ?></h4></li> 
                <li><h4>PH:</h4><h4><?php echo $store->phone; ?></h4></li> 
              </ul> 
              </div>   <?php 
  $ctr++; } 
   ?> 

  • PH:

添加以下内容:
$countvar=array()

然后,每次都要这样做:

if(empty($countvar[$store->category]))$countvar[$store->category]=1;
else{if($countvar[$store->category]<3){$countvar[$store->category]++; [DISPLAY THE THINGS]}}
if(空($countvar[$store->category])$countvar[$store->category]=1;
else{if($countvar[$store->category]category]++;[DISPLAY THE THINGS]}

当您在一个位置列出所有门店时,就是这种情况。如果您在分类中列出,其他解决方案也会很好地工作。

只需实现一个计数变量,每次通过循环时递增它,如果达到3,则会断开。虽然这会起作用,但我认为为了可读性和以后能够修改它,使用计数器变量会使更有意义的是……我完全不同意,你用一个计数器变量增加了不必要的开销,并且没有真正的理由使代码膨胀。更不用说拉数百行只使用3是愚蠢的。只拉你需要的行!这使得假设DB查询只拉一行每个存储结果集。给定在OP中迭代的东西是
$this->store_list
,实际情况可能并非如此。我完全同意@Developer。唯一需要注意的是,topic starter需要一个更多按钮来显示更多记录。这可以通过实现Ajax请求(可以认为是多余的)来解决或者只是将限制扩展到
3+n
行,其中
n
是通过JavaScript显示的所需额外行数。我还需要一个更多按钮,将其与底部的“更多>>”等其他存储区相关联
foreach (array_slice ($this->store_list, 0, 3) as $store)