2015-10-28 58 views
0

我會noramlly嘗試使用isset操作如下,其中$ x具有的使用權將被強行設置爲空或$ Y如果存在PHP isset

$x = isset($y) ? $y : null; 

但是下面的代碼做類似的事情。但是,我不得不在下面的解決方案中編寫「虛擬」代碼。我怎樣才能防止這一點?

isset($y) ? $x = $y: 'dummy'; 

哪個解決方案#1或#2更受歡迎?

+5

這是一個偏好問題,但我會_strongly_首選1.三元運算符'cond? true:false'並不意味着用於第二個示例中的流量控制。它不是'if/then/else'的簡寫,通常用於分配或返回值,如同第一個那樣。對於第二種用法,'if(isset($ y))$ x = $ y;'是一個更直接的模式,並且這兩個函數在功能上並不相同,因爲$ x在第二個中未被設置。 –

+0

我會使用第一個,因爲在語句中分配變量是很奇怪和令人困惑的。 – Andrius

+0

我想強調這一部分:「$ x未設置」 - 所以現在變量是*有條件*設置。你有意讓你的工作更難嗎? –

回答

1

說「代碼是供程序員閱讀的 - 而二進制是供機器閱讀」的原理適用於此。

$x = isset($y) ? $y : null;是乾淨的,直接的

isset($y) ? $x = $y: 'dummy';是迴旋和傾斜。

+2

「總是編碼,就好像最終維護你的代碼的人是一個知道你住在哪裏的暴力精神病患者一樣。」 –