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

时间:2013-10-14 16:51:17

标签: php variables if-statement

我一直在与以下代码和变体进行斗争,但未能提出任何有效的方法。我的想法是检测变量$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

任何帮助都将不胜感激。

感谢。

3 个答案:

答案 0 :(得分:1)

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

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

!= ''比较可能会根据您对isset()strlen()is_null()的需求而变化(如Ville Rouhiainen建议的那样)或其他。

答案 1 :(得分:1)

您可以使用替代方案(并按照建议修剪):

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

但你可能会通过过滤网址来做得更好:

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

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

答案 2 :(得分:1)

解决方案

此答案假设您有一个变量$largeimg6,该变量将设置为网址或empty

在这种情况下,这是一个相当简单的修复。您需要完全删除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;