просто кажется, что возникли проблемы с оператором if - PullRequest
1 голос
/ 17 декабря 2010

У меня есть этот класс кода, и один кусок кода просто мешает работать целиком, и я не могу понять, почему.

Сценарий: метод отправит json в ответ при вызове через ajax, код работает нормально, за исключением условия if.

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

Фактически, если условие представляет собой сравнение двух значений, а не просто ложь, если я установил 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);    
}

error_reporting выбрасывает без ошибок.

Ответы [ 3 ]

0 голосов
/ 17 декабря 2010

Это из руководства по php: http://php.net/manual/en/control-structures.if.php

Если выражение оценивается как TRUE, PHP выполнит оператор, а если оно оценивается как FALSE - проигнорирует его.

Ваше выражение по замыслу оценивается как ложное, и поэтому PHP игнорирует его.

Я предполагаю, что использование чего-то вроде if(!true) будет работать лучше, потому что если условие, которое вы задаете для оператора if, ложно,тогда оператор if оценил бы его как истинное.

0 голосов
/ 17 декабря 2010

Спасибо всем, кто пытался мне помочь, но я разобрался с проблемой, похоже, что вызов addchild идет в $ menu [] узла агента, который вызывал ошибку.Поэтому, когда оно было ложным, условие if работало нормально, но из-за отсутствия узла агента скрипт просто перестал загружаться.Так как это был вызов ajax, я понял это только сейчас.Всем всем спасибо!

0 голосов
/ 17 декабря 2010

Редактировать: после просмотра вашего кода вы всегда должны использовать встроенную функцию php для проверки значений типа null

Попробуйте это:

$menu[] = (is_null($condition))? new jsTreeNode('node','nodeid') : new jsTreeNode('node');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...