2014-12-30 83 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

谢谢大家。