2012-07-27 49 views
1

我有一個工作如果/ else在SQL返回。如果它是空的,我顯示一個默認值。PHP:將if/else更改爲一行條件失敗。我想知道爲什麼

<?php 
if($row['imagename']==='') 
    { 
     echo "placeholder.png"; 
    } 
else 
    { 
     echo htmlspecialchars($row['imagename'], ENT_QUOTES, 'UTF-8'); 
    } ?> 

,我試圖把它全部在一行即

<?php ($row['imagename']==='') ? echo "placeholder.png";:echo htmlspecialchars($row['imagename'], ENT_QUOTES, 'UTF-8'); ?> 

其失敗。

有人可以澄清爲什麼失敗?

TIA

+0

@Yan是對的,有一個錯字。 – 2012-07-27 11:29:45

回答

9

刪除分號,並在開始添加echo

​​
+0

DUH!謝謝:) – 2012-07-27 15:16:50

5

作爲一個語言結構,echo不喜歡處於?:表達。做到這一點,而不是:

echo true ? 'foo' : 'bar'; 
+0

??根據** vld **(至少在PHP 5.3.10版本中),編譯器發出的正是我所期望的,並且與echo相同(true?'foo':'bar');' – TerryE 2012-07-27 11:41:09

+0

@TerryE?我不明白你在說什麼。 「VL​​D」?我說'真的嗎? echo'foo':echo'bar';'不起作用,它不在5.3.13上。 – deceze 2012-07-27 11:42:36

+0

對不起,我誤解了你的A.我的壞心事。年終+1。回聲是一個聲明,而不是一個函數。 BTW for other readers [vld](http://pecl.php.net/package/vld)是一個操作碼反彙編程序。 – TerryE 2012-07-27 19:26:11

6
<?php echo ($row['imagename']==='') ? "placeholder.png" : htmlspecialchars($row['imagename'], ENT_QUOTES, 'UTF-8'); ?> 

您正在使用的三元操作者錯誤

1

打印和回顯之間的一個區別是print有一個值,而echo不是。

的結構:

$test ? planA : planB 

選擇的值,扁平疣或planB之一,即使你不使用結果的打算。由於回波沒有價值,它不會工作:

$test ? echo 'plan A' : echo 'plan B'; // <-- not working 

如果你想使用這個簡單的語法,只是打印語句替換你的echo語句。

$test ? print 'plan A' : print 'plan B'; // <-- should work 
相關問題