PHP - For循环,将列表拆分为3个单独的列表(按顺序)

时间:2017-06-07 02:18:00

标签: php wordpress for-loop

我有以下代码:

<?php
        $brandNames = get_post_meta( get_the_ID(), 'brands_list', true );
        if( $brandNames ):
    ?>  
        <ul>
            <?php 
                for( $z = 0; $z < $brandNames; $z++ ):
                $third_count = ceil($brandNames / 3);   

                $brandName =  $brandNames.blah;
            ?>

                <?php echo $brandName;?><br/>

                <?php if($z == $third_count & $brandNames != 1):?>
                    <?php echo "</ul><ul>";?>
                <?php endif;?>

            <?php endfor;?>
        </ul>
    <?php endif;?>

当它输出列表时,它只输出2个UL元素,而不是3个。不确定我做错了什么,任何提示都会受到赞赏。

它已经过了三分之一,关闭了UL以创建另一个,但从未创建第三个,只是更大的第二个UL。

1 个答案:

答案 0 :(得分:0)

这应该可以解决问题。首先,我计算$brandNames数组有多少索引。然后我更改了输出</ul><ul>的条件语句。首先,我向$z添加1以获取循环计数,然后使用%(模数)3 == 0,它将循环计数确定为3并返回余数。如果余数等于0,那么你知道循环计数是3的倍数。然后我确保循环计数不等于总索引  在$brandNames数组中,以便不输出额外的</ul><ul>

<?php
    $brandNames = get_post_meta( get_the_ID(), 'brands_list', true );
        $brandCount = count($brandNames);
    if( $brandNames ):
?>
    <ul>
        <?php
          for( $z = 0; $z < $brandNames; $z++ ):
            $brandName =  $brandNames.blah;
        ?>

            <li><?php echo $brandName;?></li>

            <?php if(($z + 1) % 3 == 0 && ($z + 1) != $brandCount): ?>
                <?php echo "</ul><ul>";?>
            <?php endif;?>

        <?php endfor;?>
    </ul>
<?php endif;?>