【问题标题】:How to add class on each item using while loop如何使用while循环在每个项目上添加类
【发布时间】:2021-02-28 13:53:36
【问题描述】:

我只想使用 php 中的 while 循环在每个项目上添加一个类。但问题是它只会添加到大于 2 的项目,而不是所有项目。如果项目超过 2,我的目标是在所有项目上添加类“nav-multiple”。

<ul>
    <?php
    $index = -1;

    // loop through the rows of data
    while ( have_rows('property_section_menu_repeater_field') ) : the_row();
        $index++;
        $title = get_sub_field('property_section_menu_repeater_subfield1');
        $unique_id = get_sub_field('property_section_menu_repeater_subfield2');
    ?>
        <li class="nav-item <?php echo $index >= 2 ? 'nav-multiple' : ''; ?>">
            <a class="nav-link p-0" href="#<?php echo $unique_id; ?>"><?php echo $title; ?></a>
        </li>
    <?php endwhile; ?>
</ul>

当前输出:

<li class="nav-item">
    <a></a>
</li>
<li class="nav-item nav-multiple">
    <a></a>
</li>

我想要达到的输出:

<li class="nav-item nav-multiple">
    <a></a>
</li>
<li class="nav-item nav-multiple">
    <a></a>
</li>

【问题讨论】:

  • 您正在与当前索引进行比较。您需要与结果总数进行比较。
  • 看来您正在使用 ACF 库。尝试检查他们的文档,看看是否有返回行数的函数。
  • 谢谢@El_Vanja。我使用了 php count() 函数并从 while 切换到 foreach 以使其更容易并且现在可以工作。

标签: php html foreach while-loop advanced-custom-fields


【解决方案1】:

好的,我现在通过使用 php count() 函数和 foreach 循环解决了这个问题

<ul>
    <?php
    $rows = get_field('property_section_menu_repeater_field');
    // loop through the rows of data
    foreach($rows as $key => $row):
        $title = $row['property_section_menu_repeater_subfield1'];
        $unique_id = $row['property_section_menu_repeater_subfield2'];
    ?>
    
        <li class="nav-item <?php echo count($rows) >= 2 ? 'nav-item-multiple' : ''; ?>">
            <a class="nav-link p-0" href="#<?php echo $unique_id; ?>"><?php echo $title; ?></a>
        </li>
    <?php endforeach; ?>
</ul>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-23
    • 2020-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多