检测 PHP 中的空变量不起作用


Detect empty variable in PHP not working

我一直在与以下代码和变体作斗争,但无法想出任何有效的方法。这个想法是,我检测变量$largeimg6(图像的 URL)是否为空(图像是否已加载),如果没有,则加载默认变量 ( $defaultimage ) 的值,其中包含默认图像的 URL。

<?php if(!empty($largeimg6)) : ?>
<img class="rpPicture" id="rpPicture<?php echo $key; ?>" onload="showPicture(this, <?php echo SHOW_PICTURES; ?>)" width="60" height="60" src="<?php echo $largeimg6; ?>" alt="Buy CD!" title="Buy CD!" />
<?php endif; ?>

问题是我不知道在哪里添加$largeimg6为空的参数,因此添加:

$largeimg6 = $defaultimage

任何帮助将不胜感激。

谢谢。

您可以在 if 语句之前尝试此操作:

<?php $largeimg6 = $largeimg6 != '' ? $largeimg6 : $defaultimage; ?>

!= ''比较可能会根据您需要isset()strlen()is_null()(如Ville Rouhiainen建议)或其他任何内容进行更改。

您可以使用替代方法(并按照已经建议的方式进行修剪):

$largeimg6 = trim($largeimg6);
if (isset($largeimg6)&&strlen($largeimg6)>0)

但是通过过滤 URL,您可能会做得更好:

$largeimg6 = trim($largeimg6);
if(filter_var($largeimg6, FILTER_VALIDATE_URL))

更多信息: http://php.net/manual/es/book.filter.php

解决方案

这个答案假设你有一个变量$largeimg6要么要设置为 url,要么为空。

在这种情况下,这是一个相当简单的修复。您需要完全删除 if 语句并替换您的:

<?php echo $largeimg6; ?>

跟:

<?php echo (empty($largeimg6)) ? '/default/image.jpg' : $largeimg6; ?>

解释

以上相当于:

if(empty($largeimg6)){
    echo '/default/image.jpg';
}
else{
    echo $largeimg6;
}

但形式如下:

(IF) ? THEN : ELSE;