2014-12-30 82 views
1

這個錯誤一直困擾着我很長一段時間,我甚至找不到在互聯網上任何地方的答案,甚至使用PHP官方文檔。在PHP中寫OR條件時出現奇怪的錯誤

當我寫的,如果有這樣的

if ((empty($user) == true) || (isset($user->data) == false)) { 
    //... 
} 

PHP多個條件語句說「調用未定義功能()」。

然後我嘗試這種另類:

if (empty($user) == true || isset($user->data) == false) { 
    //... 
} 

和PHP說調用未定義的函數isset()函數。

PHP版本5.5.15。

+0

嘗試檢查函數是否存在與此http://php.net/manual/en/function.method-exists.php,如果沒有方法isset你可以重新安裝它,或者,你可以改變isset with!empty。嘗試var_dump(isset($ user-> data)); –

+0

'isset'從一開始就一直存在。所以檢查行號並重新評估您的診斷。不要忘記你可以添加換行符來幫助你確定正確的錯誤位置。 –

+0

另外,真的不需要檢查'== true','== false'可以通過'!'操作符來檢查。 –

回答

0

如何:

if (empty($user) || !isset($user->data)) { 
    //... 
} 
+0

這節經文是'== true'或'== false '相當於無關緊要。因爲你的答案只是* style *而不是*功能*的問題。從視覺上看,與錯誤消息有關的OP代碼沒有任何問題(沒有考慮到無敵角色)。 –

+0

公平。我想我的觀點是,在試圖弄清楚他的錯誤可能在哪裏時,我發現自己想要計算他有多少個開放的括號。這很容易跟蹤。就這樣說,永遠不會猜到一個無形的角色。很有意思! – Mooseknuckles

2

一次偶然的機會我只是找到了答案,我自己的問題。畢竟這次我無法相信。

你說得對@Musa

if (empty($user) == true || isset($user->data) == false) { 

if (empty($user) == true || isset($user->data) == false) { 

我這才意識到出事了重建既條件語句,看着崇高的語法高亮。

我使用alt gr來編寫管道符號,有時候我比它更多地按下按鈕,並且最終寫入了alt gr +空格。它產生了一個我認爲是空間的隱形角色。

Sublime code screen capture

謝謝大家。