簡體   English   中英

在PHP中使用三元運算符

[英]Using the ternary operator in PHP

如果數據庫查詢中的布爾表字段為true,則嘗試打印yes,否則為false。

我正在這樣做:

echo "<td>"{$row['paid'] ? 'Yes' : 'No'";}</td>";

為什么這不正確?

echo "<td>".(($row['paid']) ? 'Yes' : 'No')."</td>"; 

就個人而言,我從不回顯HTML,所以我會這樣做:

<td><?=(($row['paid']) ? 'Yes' : 'No')?></td>

雖然只是一個偏愛的東西。

echo "<td>".(($row['paid']) ? 'Yes' : 'No')."</td>"; 

其他人已經糾正了您的錯誤,但我認為您可能想知道為什么。

使用三元數實際上不是問題,這是將其與其他東西連接的方式。

回聲是一個帶有一個變量的函數。 一個字符串。 實際上是這樣(盡管人們傾向於將括號留在外面):

echo(SomeString);

在您的情況下,SomeString需要為“”,后跟三進制的結果,然后為“”。 這是三個字符串,需要將它們粘合在一起成為一個字符串,以便您可以“ echo()”它們。

這稱為串聯。 在PHP中,這是使用點完成的:

"<td>" . (($row['paid']) ? 'Yes' : 'No') . "</td>"

可以將其放置在echo()中,如下所示:

echo("<td>" . (($row['paid']) ? 'Yes' : 'No') . "</td>");

或者,您可以通過使用將多個字符串作為參數的函數來跳過串聯。 Sprintf()可以為您做到這一點。 它需要一個“格式”字符串(基本上是一個模板)和任意數量的可變字符串(或數字,隨便什么)。 使用%s符號指定需要在何處插入字符串。

sprintf("<td>%s</td>",(($row['paid']) ? 'Yes' : 'No'));

現在,世界就是您的牡蠣。

引用

echo "<td>".(($row['paid']) ? 'Yes' : 'No')."</td>"; 

由於echo需要很多參數,因此應使用逗號而不是字符串連接,因為這需要更多的處理和內存:

echo "<td>", (($row['paid']) ? 'Yes' : 'No'), "</td>";

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM