很简单,似乎还有if语句的问题

时间:2010-12-17 05:38:49

标签: php if-statement

我有这类代码和一段代码只是阻止整个工作,我无法弄清楚为什么。

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

        if(false) // this stops the script
        {
        $menu[] = new jsTreeNode('node','nodeid');
        }
        $menu[] = new jsTreeNode('node');

实际如果条件是两个值的比较而不仅仅是假,如果我把它或者当实际条件为真时它工作正常但是假只是停止整个脚本。任何想法??

编辑:

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);    
}

error_reporting不会抛出任何错误。

3 个答案:

答案 0 :(得分:0)

编辑:看完你的代码后,你应该总是使用php的build in函数来测试像null这样的值。

试试这个:

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

答案 1 :(得分:0)

这是来自php手册:http://php.net/manual/en/control-structures.if.php

  

如果expression的计算结果为TRUE,那么PHP   将执行语句,如果它   评估为FALSE - 它会忽略它。

您的设计表达式评估为false,因此PHP忽略它。

我的猜测是使用if(!true)之类的东西会更好用,因为如果你给if语句的条件是false,那么if语句会把它评估为true。

答案 2 :(得分:0)

感谢所有试图帮助我的人,但我想出了问题,似乎有一个addchild调用转到代理节点的$ menu []导致了这个bug。所以当它是假的时,if条件工作正常,但由于缺少代理节点,脚本才停止加载。因为这是一个ajax电话我现在才想出来。非常感谢大家!