【问题标题】:Foreach not executing right...... PHPForeach 没有正确执行...... PHP
【发布时间】:2015-08-06 07:10:11
【问题描述】:
<?php 
    $i = 0;
    $images = get_field('bildspel');

    if( $images ):  
    if( is_array( $images )) {
        foreach( $images as $image ): 
            print($image);
        ?>
        <div class="item active">
            <img src="<?php echo $image['url']; ?>" />
        </div>
        <?php
        endforeach;
    }
 endif; ?>

我已经尝试过使用 is_array if 语句和不使用。如果没有它,我会收到以下错误:

警告:为 foreach() 提供的参数无效-.....

我做错了什么?

我正在尝试从 ACF 循环出一组图像 - wordpress。

【问题讨论】:

  • 请发布您在图片中拥有的数据是什么
  • 所以基本上在转储数据之后它似乎是一个字符串... string '
  • 因此,如果要检索字符串,则需要返回设置值的位置。上面的代码不是问题,正如我的回答 - 你试图循环一些不是数组的东西。
  • @Jigar 正引领您走向正确的方向。您需要评估$images,毫无疑问,您会发现它不是一个数组。但是,我想问一下您是如何开发代码的。您只是在使用编辑器,还是在使用 IDE? Print debugging 确实有效,但这不是正确的方法。为自己准备一个好的 IDE(例如 Eclipse PDT)并学习如何在不更改代码的情况下设置断点和评估变量。

标签: php wordpress foreach


【解决方案1】:

您几乎已经回答了自己的问题:

我已经尝试过使用 is_array if 语句和不使用。如果我走 没有它,我会收到以下错误:

警告:为 foreach() 提供的参数无效-.....

答案是$images 不是一个数组。您需要检查 bildspel 是否已实际设置。你确定这是正确的名字吗?其他地方设置正确吗?

【讨论】:

    【解决方案2】:

    我将上面的代码发布到我的编辑器中,它告诉我有错误 - 也许它不理解我不知道的特定语法风格,但以下可能有效?

    <?php
        $i = 0;
        $images = get_field('bildspel');
    
        if( $images && is_array( $images ) && !empty( $images ) ) {
            foreach( $images as $image ){
                /*print( $image );*/
                echo "
                    <div class='item active'>
                        <img src='{$image['url']}' />
                    </div>";
            }
        }
    ?>
    

    【讨论】:

    • 为什么不同时检查!= falseisset($images[0])true != false?换句话说:你在这里过分检查,没有任何收获。
    • @deceze - 这些额外的检查是否会导致任何问题,而不是您想要的方式?
    • @deceze - 真正的问题
    • 如我所说:没用。它增加了更多不必要的东西。它使代码更难阅读和维护。代码中的每个额外字符都是潜在的错误;您的目标应该是尽可能少地写作以正确完成工作。 if (is_array($images)) 在这种情况下完全足够了。额外的检查是多余的、错位的,不会增加任何价值。
    猜你喜欢
    相关资源
    最近更新 更多
    热门标签