【问题标题】:Display image if array is empty [closed]如果数组为空,则显示图像[关闭]
【发布时间】:2014-10-10 21:13:22
【问题描述】:

我正在为单个数组而苦苦挣扎。我有一个滑块,它从数组中提取数据并将它们显示为fancybox。如果数组中有数据,它工作得很好,但如果其中没有数据,无限循环在加载时开始。

基本上,我要完成的是在其上添加单个图像(例如:此时没有图像.jpg)。

这是一个代码(原文):

<ul class="sliders-wrap-inner">
<?php 
$gallery = get_post_meta($post->ID, 'gallery_bid', true);
else foreach($gallery as $gale ) {
?>
<li>
<a class="fancybox" data-fancybox-group="gallery" href="<?php echo $gale['image-larger']; ?>"><img src="<?php echo $gale['image-larger']; ?>" alt="" /></a>                                         
</li>
<?php } ?>
</ul> 

编辑的代码(我尝试完成它)

<ul class="sliders-wrap-inner">
    <?php 
    $gallery = get_post_meta($post->ID, 'gallery_bid', true);
    if(empty($gallery))
    echo 'There are no images!';
    else foreach($gallery as $gale ) {
    ?>
    <li>
    <a class="fancybox" data-fancybox-group="gallery" href="<?php echo $gale['image-larger']; ?>"><img src="<?php echo $gale['image-larger']; ?>" alt="" /></a>                                         
    </li>
    <?php } ?>
    </ul> 

提前谢谢大家!

【问题讨论】:

  • 空数组如何导致foreach中的无限循环?如果有的话,它会跳过它吗?
  • @Fluffeh 很可能是一些模糊的 Wordpress 插件在没有返回图像时出现错误。
  • @Fluffeh 我的真正意思是 foreach 导致没有图像加载,而 fancbox 加载图标一直在加载(旋转)。
  • @evul 你能发布你使用的原始代码并在下面发布任何更改吗?当您从答案更改代码时,所有答案都将失去意义......
  • @jeroen 也许我做了你要求的。对此感到抱歉。

标签: php foreach


【解决方案1】:

您没有无限循环,但您可能看不到任何/事情出错,因为关闭 } 位于错误的位置。也许在文档末尾的某个地方?

将结束的} 移动到&lt;/li&gt;&lt;/ul&gt; 之间:

<li>
<a class="fancybox" data-fancybox-group="gallery" href="<?php echo $gale['image-larger']; ?>"><img src="<?php echo $gale['image-larger']; ?>" alt="" /></a>
</li>
<?php
}
?>
</ul>

【讨论】:

  • 抱歉,我好像没有粘贴整个代码。我实际上在 li 和 ul 的末尾有结束 }。
  • @evul 这本质上是复制和粘贴,微小的更改实际上解决了您遇到的问题。关闭 &lt;/li&gt; 现在位于右大括号之前,而在您的示例中,关闭标签位于右大括号之后
  • @DarylGill 哦,我明白了,我修复了它,但如果 $gallery 为空,我仍然想显示一些东西,我尝试使用 if(empty($gallery)) 但它没有成功。
  • @evul 那endif 在那里做什么?您可以发布您正在使用的实际代码,包括完整的块/循环吗?
  • @DarylGill 是的,我已经编辑了操作。
【解决方案2】:
$Array = array();
$Array_Count = count($Array);

if ($Array_Count === 0){
  // echo image here
}else foreach($Array AS $Key => $Value){
  // work with array
}

或者更适合您提供的内容:

<ul class="sliders-wrap-inner">
    <?php
        $Gallery = get_post_meta($post->ID, 'gallery_bid', true);
        if (count($Gallery) === 0){
            // print no image here The slider should adjust automatically depending on the fed images
        }else foreach($Gallery AS $Gale){
            echo '<li>';
            echo '<a class="fancybox" data-fancybox-group="gallery" href="'.$Gale['image-larger'].'"><img src="'.$Gale['image-larger'].'" alt=""></a>';
            echo '</li>';
        } ?>
</ul>

【讨论】:

  • 谢谢你的朋友,但那没有用。我试图在其中回显图像或简单的文本,但都没有奏效。它仍然根本不加载任何图像。 (旋转加载图标)
  • 那么,你确定你指向一个存在的图像,在一个用户可以访问的目录中,Web 服务正在运行并附加正确的文件扩展名?从研究代码。它应该包含在$Gale['image-larger'] 中。您能否更新您的问题以显示内容?
  • 我确信循环(Foreach)中没有任何内容,这就是为什么我正在寻找要显示的替代图像。由于某种原因,它仍然尝试加载不存在的图像,而不是显示我在您提供的代码中输入的 echo src 图像。
  • 那么您的第一个调试步骤是注释掉所有客户端输出,例如 HTML,使用白页,var_dump 数组以查看内容,然后回显数组的计数。获得该信息后报告
  • @evul 请问我的调试步骤之后发生了什么?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-05-27
  • 2018-09-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多