簡體   English   中英

if else語句為變量賦值的簡寫

[英]shorthand for if else statement assigning value to variable

哈哈,為什么名稱顯示值1

['name' => ($profile->getNickname() || $profile->getName()),]

a => b || c如果b為空,使用c是嗎?

ps我知道我可以做其他速記(三進制)的普通操作,但是它又長又不可讀,我不喜歡它。

在javascript中,這是很常見的事情,但是PHP會強制轉換為布爾值。

這個問題將回答您: 為變量提供默認值的最佳方法(模擬Perl ||,|| =)

$name = $profile->getNickname() ?: $profile->getName();

在PHP中,布爾運算符|| &&總是產生布爾值; 必要時將操作數強制轉換為布爾值,並丟棄原始值。 例如,這與JavaScript不同,在JavaScript中,對操作數進行“真實性”評估,但保留其原始值。

您看到的1只是因為您回顯了布爾值,而布爾值又將true強制為字符串1

但是,PHP確實具有所需的簡寫運算符: ?:

($ profile-> getNickname()|| $ profile-> getName())只是實現的條件(1),這就是為什么顯示為1的原因。

它應如下所示:

// if nick name is set and not empty then show it otherwise show name
[ 'name' => ((isset($profile->getNickname()) && ($profile->getNickname() != "")) ?  $profile->getNickname() : $profile->getName())]

如果isset(data),則從函數返回布爾值
$ profile-> getNickname()
$簡介- >的getName()
決定條件。

暫無
暫無

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

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