Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP foreach将每9项排序为列表和div_Php_Foreach - Fatal编程技术网

PHP foreach将每9项排序为列表和div

PHP foreach将每9项排序为列表和div,php,foreach,Php,Foreach,我目前正在努力将foreach循环分为自己的div和ul,以下是我目前的情况: <ul class="thumbnails parts-page"> <?php $show = false; ?> <?php foreach ($this->items as $item) : ?> <?php if($item->state == 1 || ($item->state == 0 && JFactory::getU

我目前正在努力将foreach循环分为自己的div和ul,以下是我目前的情况:

<ul class="thumbnails parts-page">
<?php $show = false; ?>
<?php foreach ($this->items as $item) : ?>
    <?php if($item->state == 1 || ($item->state == 0 && JFactory::getUser()->authorise('core.edit.own',' com_parts'))):
        $show = true;
    ?>
        <li class="span4">
            <a href="<?php echo $item->brand_link; ?>" style="background:url(<?php echo $item->brand_image; ?>) no-repeat center center #FFF; "  class="thumbnail parts" target="_blank">
            </a>
        </li>
    <?php endif; ?>

<?php endforeach; ?>
</ul>
基本上,这会产生:

<ul class="thumbnails parts-page">
            <li class="span4">
            <a href="http://www.canecreek.com/" style="background: url('/torqzone/images/brands/cane-creek.png') no-repeat center center #FFF; "  class="thumbnail parts" target="_blank">
            </a>
        </li>

            <li class="span4">
            <a href="http://www.amclassic.com/en/" style="background: url('/torqzone/images/brands/american-classic.png') no-repeat center center #FFF; "  class="thumbnail parts" target="_blank">
            </a>
        </li>

            <li class="span4">
            <a href="http://www.avid.com/US/" style="background: url('/torqzone/images/brands/avid.png') no-repeat center center #FFF; "  class="thumbnail parts" target="_blank">
            </a>
        </li>
</ul>
但我需要将其拆分,以便每9项都有自己的内容:

<ul class="thumbnails parts-page">
9ITEMS
</ul>
    9项
我在网上找到了各种各样的解决方案,但似乎都不管用


非常感谢您的帮助。

将变量设置为1。每次运行循环时都要增加它。如果其>9,则创建一个新ul,否则将其添加到旧ul。


<?php 
$i=0;
foreach ($this->items as $item) : ?>
    <?php if($item->state == 1 || ($item->state == 0 && JFactory::getUser()->authorise('core.edit.own',' com_parts'))):
        $show = true;
++$i;    
?>
        <li class="span4">
            <a href="<?php echo $item->brand_link; ?>" style="background:url(<?php echo $item->brand_image; ?>) no-repeat center center #FFF; "  class="thumbnail parts" target="_blank">
            </a>
        </li>
<?php if($i>8): $i=0; ?>
</ul><ul class="thumbnails parts-page">
<?php endif; ?>
    <?php endif; ?>

<?php endforeach; ?>

    代替上述代码,替换此

    使用计数器变量如何

    $counter = 0;
    <?php $show = false; ?>
    <?php foreach ($this->items as $item) : ?>
        <?php if ($counter % 9 == 0) 
             echo '<ul class="thumbnails parts-page">';?>
    
    
        <?php if($item->state == 1 || ($item->state == 0 && JFactory::getUser()->authorise('core.edit.own',' com_parts'))):
            $show = true;
        ?>
            <li class="span4">
                <a href="<?php echo $item->brand_link; ?>" style="background:url(<?php echo $item->brand_image; ?>) no-repeat center center #FFF; "  class="thumbnail parts" target="_blank">
                </a>
            </li>
        <?php endif; ?>
    
       <?php if ($counter % 9 == 0) 
             echo '</ul>';?>
    
    <?php $counter +=1 ?>
    <?php endforeach; ?>
    
    $counter=0;
    
  • 这样,您将每隔9项打印一次ul标签(将它们放在列表中)。
    (请测试代码,因为我现在没有用于测试的环境)

    使用类似以下内容:

    echo '<ul ...>';
    $i = 0;
    foreach ( ...... ) {
      if (++$i % 9 == 0) echo '</ul><ul ....>';
    
      // your code here
    
    }
    echo '</ul>';
    
    echo'';
    $i=0;
    foreach(……){
    如果(+$i%9==0)回显“”;
    //你的代码在这里
    }
    回声“”;
    
    实现这一点的最简单方法是创建一个每次递增一的计数器。例如,在代码开头声明$count,在For-each语句中声明$count++。然后,您可以创建一个IF语句,该语句表示如果计数为9,则创建新的UL


    似乎人们想把这件事弄得太复杂了。

    根据你的了解,你想要的是每个无序的列表必须只包含9项。。如果是这种情况,您可以使用count变量

    <?php $show = false; $count=0; ?>
    <?php foreach ($this->items as $item) : ?>
        <?php if($item->state == 1 || ($item->state == 0 && JFactory::getUser()->authorise('core.edit.own',' com_parts'))):
            $show = true;
        ?>
     <?php if($count%9==0) echo'<ul class="thumbnails parts-page">'; ?>
            <li class="span4">
                <a href="<?php echo $item->brand_link; ?>" style="background:url(<?php echo $item->brand_image; ?>) no-repeat center center #FFF; "  class="thumbnail parts" target="_blank">
                </a>
            </li>
      <?php if($count%9 ==0) echo '</ul>'; ?>
       <?php $count++; ?>
        <?php endif; ?>
    
    <?php endforeach; ?>
    </ul>
    
    
    

  • 一个非常简单易读的解决方案是:

    
    

    是的,这是一个额外的循环,但可读性更强。

    您尝试过哪些解决方案?它们是否在foreach循环中包含计数器和标签?是的,但随后它就变成了ul中的ul和ul中的ul等等。当它达到
    >8
    时,也重置
    $i
    是的,我很高兴你从评论中删除了这一点,并将其加入到答案中。
    <?php foreach (array_chunk($this->items, 9) as $items): ?>
      <ul>
        <?php foreach ($items as $item): ?>     
          <!-- your code -->
        <?php endforeach; ?>
      </ul>
    <?php endforeach; ?>