在PHP foreach循环中执行一些操作

时间:2015-12-04 10:54:45

标签: php magento foreach

我正在使用foreach循环为Magento商店创建品牌页面。在循环中,每5个项目被放入一个无序列表中。它们也被字母表中的字母分开(A - D,E - H,I - L,M - P,Q - U,V - Z)。我需要在每组列表之前插入一个标题。例如:

<h2>A - D</h2>
<ul>
    <li>Brand 1</li>
    <li>Brand 2</li>
    <li>Brand 3</li>
    <li>Brand 4</li>
    <li>Brand 5</li>
</ul>

这就是我如何获得品牌并将它们分开:

<?php foreach($brands as $brand) : ?>
    <?php $name = $brand->getName(); ?>

    <?php if((substr($name, 0, 1) == 'A') || (substr($name, 0, 1) == 'B') ||
    (substr($name, 0, 1) == 'C') || (substr($name, 0, 1) == 'D')) : ?>

        <?php if($count % 5 == 0) : ?>
            </ul><ul>
        <?php endif; ?>

        <li><a href="<?php echo $brand->getUrl(); ?>">
            <?php 
                $id = $brand->getId(); 
                $imageUrl = Mage::getModel('catalog/category')->load($id)->getThumbnailUrl();
            ?>
            <img src="<?php echo $imageUrl; ?>" alt="<?php echo $name; ?>">
        </a></li>

        <?php $count++; ?>
    <?php endif; ?>
<?php endforeach; ?>

我以为我可以通过计算每组4或5个字母的品牌数量来将标题插入正确的位置,然后按照我所做的那样将其放入。但它不起作用。

有什么方法可以告诉标题只在循环的第一次运行时插入?

1 个答案:

答案 0 :(得分:0)

试试这个

$ascci_val =  ord( strtolower(sub_str($name, 0, 1)) );
if( ($ascci_val >= 97) && ($ascci_val <= 100) ){ 
  // brand name stats with a letter between A-D / a-d
}