【问题标题】:Every 4 div wrapped in a div每 4 个 div 包裹在一个 div 中
【发布时间】:2020-01-20 20:31:17
【问题描述】:

有这样一个循环,我想用类 tabs__cat-img 获得 4 个重复的 div,这 4 个 div 应该变成一个类 tabs__ cat 的 div。如有任何帮助,我将不胜感激。

<?php
    if($children_categories) :
    foreach($children_categories as $children_cat) :
?>
<div class="tabs__cat">
    <div class="tabs__cat-img">
        <a href="">
            <img src="" alt="">
        </a>
    </div>
</div>
<?php
    endforeach;
    endif;
?>

输出应如下所示:

<div class="tabs__cat">
    <div class="tabs__cat-img">
        <a href="">
            <img src="" alt="">
        </a>
    </div>
    <div class="tabs__cat-img">
        <a href="">
            <img src="" alt="">
        </a>
    </div>
    <div class="tabs__cat-img">
        <a href="">
            <img src="" alt="">
        </a>
    </div>
    <div class="tabs__cat-img">
        <a href="">
            <img src="" alt="">
        </a>
    </div>
</div>

<div class="tabs__cat"> ...

【问题讨论】:

    标签: php wordpress loops foreach


    【解决方案1】:

    我会这样做:

    <?php
    // Creates a sample array
    $children_categories = array_fill(0, 10, 'Sample');
    
    if($children_categories) :
    
        $total_categories = count($children_categories) - 1;
    
        foreach($children_categories as $id=>$children_cat) :
    
        // True for 0 -> Div will be created on first and then every 4th element
        if( $id % 4 === 0 ) { 
            echo '<div class="tabs__cat">';
        }
        // or, a bit shorter: 
        // echo $id % 4 === 0 ? '<div class="tabs__cat">' : '';
    
        ?>
    
        <div class="tabs__cat-img">
            <a href="">
                <img src="" alt="">
            </a>
        </div>
    
        <?php
    
        // True on 3 -> closing Div will be created before 4th and then every 4th element
        // Or Case: Make sure to print closing div on very last element
        if( $id % 4 === 3 || $id === $total_categories ) { 
            echo '</div>';
        }
    
        endforeach;
    endif;
    ?>
    

    【讨论】:

    • 感谢您的帮助。第一个 div tabs__cat-img 变成了一个 div tabs__cat,剩下的都没有包装 yadi.sk/i/Rni9RYBp5sS9ew
    • 抱歉,最后一个 if 语句有一个错字:它说 count( $children_cat ) 但它当然应该计算完整的数组:count( $children_categories )。我还将计数移出 foreach 循环,因此只需要计算一次
    • 页面打不开,HTTP 500 ERROR (((
    • 我不知道你是否已经戴上了 children 数组,所以我也添加了一个示例数组。获取完整代码并将其粘贴到此处:sandbox.onlinephpfunctions.com - 然后单击执行代码。你应该看到它有效。如果您没有让它运行,请发布您在系统上运行的代码。
    • 哦,是的,您的代码工作正常。但我也收到 500 错误(
    【解决方案2】:

    您只需要稍微更改一下代码即可。
    我从foreach 循环中移动了具有tabs__cat 类的父div。

    <?php
    $children_categories = array_fill(0, 4, 'Sample');
    
        if($children_categories) :
        echo '<div class="tabs__cat">'; // small changed here
        foreach($children_categories as $children_cat) :
    ?>
    
        <div class="tabs__cat-img">
            <a href="">
                <img src="" alt="">
            </a>
        </div>
    
    <?php
        endforeach;
        echo '</div>'; // small changed here
        endif;
    ?>
    

    【讨论】:

      猜你喜欢
      • 2015-02-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-06
      • 2020-05-06
      • 1970-01-01
      • 2011-03-22
      相关资源
      最近更新 更多