Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 简单的说,似乎在if语句中有困难_Php_If Statement - Fatal编程技术网

Php 简单的说,似乎在if语句中有困难

Php 简单的说,似乎在if语句中有困难,php,if-statement,Php,If Statement,我有这类代码,有一段代码会使整个程序停止工作,我不知道为什么 场景:当通过ajax调用该方法时,该方法将发送一个json作为回复,除了if条件外,代码工作正常 实际if条件是两个值的比较,而不仅仅是false,如果我设置为true,或者当实际条件为true时,它工作正常,但是false只是停止整个脚本。有什么想法吗 编辑: public function __construct($title, $nodeID = NULL) { $this->data = new stdClass

我有这类代码,有一段代码会使整个程序停止工作,我不知道为什么

场景:当通过ajax调用该方法时,该方法将发送一个json作为回复,除了if条件外,代码工作正常

实际if条件是两个值的比较,而不仅仅是false,如果我设置为true,或者当实际条件为true时,它工作正常,但是false只是停止整个脚本。有什么想法吗

编辑:

public function __construct($title, $nodeID = NULL)
{
    $this->data = new stdClass();
    $this->data->title = $title;
    $this->data->icon = 'assets/img/icons/'.strtolower($title).'.png';
    $this->attr = new stdClass();
    $this->attr->id = ($nodeID == NULL) ? strtolower($title) : strtolower($nodeID);

}

public function addChild($title, $nodeID = NULL)
{
    $this->children[] = new jsTreeNode($title, $nodeID);    
}

错误\u报告不会引发错误。编辑:查看代码后,您应该始终使用php的内置函数来测试null等值

试试这个:

$menu[] = (is_null($condition))? new jsTreeNode('node','nodeid') : new jsTreeNode('node');

这来自php手册:

若表达式的计算结果为TRUE,则PHP 将执行语句,如果 计算结果为FALSE-它将忽略它

您的表达式的计算结果为false,因此PHP会忽略它


我的猜测是,使用类似于
if(!true)
的方法会更好,因为如果您给出的if语句的条件为false,则if语句会将其计算为true。

感谢所有试图帮助我解决问题的人,但我发现了问题,似乎有一个addchild调用转到$menu[]导致错误的代理节点的。因此,当它为false时,if条件工作正常,但由于缺少代理节点,脚本停止加载。因为这是一个ajax调用,我现在才明白。还是要谢谢大家

error\u reporting(E\u ALL)
并请向我们展示您的if条件实际测试的内容,以及您的
jsTreeNode
构造函数的外观。使用类似
if(!true)
的方法是否有效?如果您的if条件具有函数调用,则可能导致错误。它看起来是什么样子?@BoltClock if($var1==$var2){}@jeremysawesome也不起作用。非常奇怪如果你设置了
错误报告(E\u ALL)
新的jsTreeNode('node')
需要创建,不管条件是真是假。我不明白你的意思,它将以一种方式创建。但是我不认为只需要为一行使用块:pbolclock是正确的,我使用jstreenode来添加多个节点,我只需要在特定条件下调用这个节点,仅此而已。另一方面,你对代码块的理解是对的,只是为了一个语句,但我现在只是在测试,我不关心代码的整洁度。你的两个wright我只是不知道这是怎么回事,但试着使用is_null函数,我不喜欢$value==NULLNo,他的意思是,当条件的计算结果为false时,PHP脚本将完全失效,这在适当的情况下是不应该发生的。是的,准确地说,为了避免混淆,请参考我在主要问题中对Boltclock的评论,ifcondition类似于if($var=$var2)
$menu[] = (is_null($condition))? new jsTreeNode('node','nodeid') : new jsTreeNode('node');