有誰知道isset和empty是如何被翻譯者解釋的,或者翻譯者如何處理未定義的變量?常量,isset和空白評估
爲了擴大我的問題,我有下面的代碼在我的包含文件:
define('USER_AUTH', !empty($_SESSION['username']) && !empty($_SESSION['status'])); //user is verified
define('ACC_IS_PENDING', $_SESSION['status'] == '0');//checks to see if user status is pending which has a status of 0
USER_AUTH作爲一個快速的手,以檢查是否用戶進行身份驗證。 ACC_IS_PENDING用作賬戶狀態未決時的快捷手段。但是,PHP給了我一個通知,告訴我在我的第二行代碼中$ _SESSION ['status']是未定義的。我知道它是未定義的,但我還沒有使用它!你怎麼敢告訴我我已經知道的事情。英雄聯盟
然而,當我欺騙代碼與以下:
define('USER_AUTH', !isempty($_SESSION['username']) && !isempty($_SESSION['status']));
define('ACC_IS_PENDING', $_SESSION['status'] == '0');
其中的isEmpty()是一個定製的功能,將始終返回FALSE。然後沒有通知! 或者,如果我用下面的代碼:
define('USER_AUTH', notempty($_SESSION['username']) && notempty($_SESSION['status']));
define('ACC_IS_PENDING', $_SESSION['status'] == '0');
凡notempty()總是返回TRUE,然後再次沒有理會。
我說得對,翻譯員檢查變量是否已經過一次測試,並且如果測試結果爲真,那麼譯員將此視爲變量已被定義?
如果是這種情況,那麼isset和empty是什麼?無論評估是真是假,他們似乎都會通知我。
define('USER_AUTH', isset($_SESSION['username']) && isset($_SESSION['status']));
define('ACC_IS_PENDING', $_SESSION['status'] == '0');
和
define('USER_AUTH', empty($_SESSION['username']) && empty($_SESSION['status']));
define('ACC_IS_PENDING', $_SESSION['status'] == '0');
很抱歉沒能長篇大論的問題。這看起來微不足道,但如果有一個快速定義的常量而不需要通知,那將是很好的選擇!任何幫助解釋或更好的解決這種瑣碎的任務將不勝感激,謝謝!
我忘了提及自定義函數附加了一個&以確保該變量通過引用傳遞。像這樣: 函數isempty(&$ var){...} – chaser 2012-07-30 11:53:45
爲什麼不創建一個IF條件來定義某些東西?我認爲當它不是這樣的時候,它會使事情變得複雜。 – Gntem 2012-07-30 12:10:50