【问题标题】:PHP - For Loop, split list into 3 separate lists (in order)PHP - For Loop,将列表拆分为 3 个单独的列表(按顺序)
【发布时间】:2017-11-08 04:54:27
【问题描述】:

我有以下代码:

<?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。

【问题讨论】:

  • &lt;?php if($z == $third_count &amp;&amp; $brandNames != 1):?&gt; 使用 flexbox 或其他东西来简化这一点。

标签: php wordpress for-loop


【解决方案1】:

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

<?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;?>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-11-17
    • 2020-12-14
    • 2018-05-17
    • 2016-09-01
    • 1970-01-01
    • 2017-11-02
    • 1970-01-01
    相关资源
    最近更新 更多