在while语句中使用div的正确方法吗?

时间:2018-10-29 11:08:04

标签: php html advanced-custom-fields

div陈述中使用while的正确方法是什么?我在弄清楚-循环运行时如何只使用div一次时遇到问题。

我的当前代码最终在每个循环中都这样结束:

 <div class="column1">
   <img src="IMG1">
</div>
<div class="column1">
   <img src="IMG">
</div>

我要实现的目标是-

 <div class="column1">
   <img src="IMG1">
   <img src="IMG2">
</div>

我当前的代码:

    <div class="roww"> 

    <?php if ( have_rows( 'image-collection' ) ) :

    $images = [];
    $i = 0;

    while ( have_rows( 'image-collection' ) ): the_row();

      $images[ $i ] = get_sub_field( 'image' );

      if ( get_sub_field( 'liela_bilde' ) == "True" ) { ?>

     <div class="column"> 
        <img src="<?php echo $images[ $i ][ 'url' ]; ?>" alt="<?php echo 
        $images[ $i ][ 'alt' ]; ?>">
    </div>

    <?php } else { ?>

    <div class="column1">
        <img src="<?php echo $images[ $i ][ 'url' ]; ?>" alt="<?php echo 
        $images[ $i ][ 'alt' ]; ?>">
    </div>


    <?php }?>
     <?php

     ++$i;

     endwhile;
     endif; ?>

     </div>

3 个答案:

答案 0 :(得分:0)

我假设您可能想在while循环内的PHP块内使用div。如果是这样,您可以使用以下语法来实现相同的目的。

<?php
while($row = mysqli_fetch_array($result)){
echo "<div style='background-color:red;color:white;'>text</div>";
}
?>

答案 1 :(得分:0)

经过一番思考和一点点测试,我认为我得到了一个可行的解决方案。关键是必须将<div>置于while循环之外。添加其他支票if($i==0),您可以执行类似echo 'class="column"'的操作。

我的解决方案可能是最糟糕的,可以找到,但是应该可以。

最后,您的代码应类似于:

<div class="roww"> 

<?php if ( have_rows( 'image-collection' ) ) :

        $images = [];
        $i = 0;

        ?> <div <?
        while ( have_rows( 'image-collection' ) ): the_row();

        $images[ $i ] = get_sub_field( 'image' );

        if ($i==0) {
            if ( get_sub_field( 'liela_bilde' ) == "True" ) { 
                echo 'class="column"';
            }
            else {
                echo 'class="column1"';
            }
        ?> > <? } ?>

        <img src="<?php echo $images[ $i ][ 'url' ]; ?>" alt="<?php echo 
        $images[ $i ][ 'alt' ]; ?>">

        <?php

        ++$i;

        endwhile; ?>
        </div> <?
    endif; ?>

</div>

这未经测试,可能包含错误,因为没有时间尝试复制您的结构。但是,考虑到您正在使用Elliot的Condon插件这一事实,它应该起作用,并且您不应该由于<div而损坏HTML。如果您这样做,那么我在某个地方出错了。

我还创建了一个非常简化的解决方案,该解决方案不依赖于插件,可以根据您的需求进行调整,并满足您的要求。该代码可以在下面找到:

<div class="roww">

<?php 
    $test=true;

    if ( $test ) :

        $images = [];
        $i = 0;
        ?>
        <div 
        <?php
        while ( $test ) :

            $test1=true;

            if($i==0) { if($test1) echo 'class="column"'; else echo 'class="column1"';
            ?> > <? } ?>


            <img src="<?php echo "Yay"; ?>" alt="<?php echo 
            "Nay"; ?>">

            <?php
            ++$i;
            if($i==5) { break; }
        endwhile; ?>
        </div> <?php
    endif;
?>

</div>

它看起来有些不同,但是我试图保持主要逻辑不变。通过更改$test$test1的值,您可以更改示例的输出。

答案 2 :(得分:0)

我认为您正在寻找的是创建包含X个项目的行并在该动态X上开始一个新行吗?

在这种情况下,可以用%找到答案。

if ($myIndex % 2 === 0) {
  // Do something
}