function foo() {
return $result = bar() ? $result : false;
}
function bar() {
return "some_value";
}
foo();
注意:未定義的變量:導致與三元運算符的PHP錯誤?
這是一個錯誤?
bar()應該保存到$ result,但它不會。然而病情工作正常,它試圖返回$結果或虛假陳述(如果巴()爲null或false)
PHP 5.4.24
function foo() {
return $result = bar() ? $result : false;
}
function bar() {
return "some_value";
}
foo();
注意:未定義的變量:導致與三元運算符的PHP錯誤?
這是一個錯誤?
bar()應該保存到$ result,但它不會。然而病情工作正常,它試圖返回$結果或虛假陳述(如果巴()爲null或false)
PHP 5.4.24
這是因爲operators precedence。是否
function foo() {
return ($result = bar()) ? $result : false;
}
-so賦值將以更高的優先級進行評估。
這是真棒。 +1 –
太棒了!是的..沒有括號它返回$結果作爲後續條件的評估。謝謝! –
我們不能做的只是:
function foo() {
return bar() ? $result : false;
}
function bar() {
return "some_value";
}
foo();
..你會得到未定義的'$ result'變量(因爲你會嘗試返回它) –
更優雅的解決方案:
function foo() {
return bar() ?: false;
}
這是爲什麼一個bug,它試圖讀取$結果,但它不是定義,因此在告訴你它的不確定。看起來像是由Design給我的。 –
它從'bar()'中獲取值,所以返回'true' =>從而分配未定義的$ result。那有什麼問題? – Rikesh
明顯的PICNIC在這裏.. :) –