почему не видны переменные заданные в условии if

4m@t!c

Александр
почему не видны переменные заданные в условии if

Есть две функции foo1() и foo2($myvar), которые возвращают true/false. В функции foo1() инициализируется переменная сессии $_SESSION['test']. Есть скрипт, в котором есть строка
PHP:
if(!foo1() && !foo2($_SESSION['test']))
   echo "false";
else
   echo "true"
Так вот выполнение идет по ветке else, ошибок не выдается. Если я вызываю foo2() за условием, то функция foo2() честно отрабатывается. Почему так?
 

Кром

Новичок
4m@t!c ты само то понял, что спросил?
Давай с самого начала.
Есть код:
PHP:
if (true && true)
	var_dump(true);
else
	var_dump(false);
Что конкретно тебе в нем непонятно? :)
 

4m@t!c

Александр
В твоем примере все понятно. выдаст строку
Я думал, что при сравнении порядок выполнения обусловлен скобками и приоритетом операторов сравнения. В конкретном случае, в моем примере, сначала проверяется условие !foo1() и если возвращается true, то проверяется второе условие !foo2(). Если бы первое условие дало false, то второе бы не проверялось. (Я где-то читал, что если логический оператор &&, тогда если бы левый операнд false, то правый не проверяется).
Как я уже сказал в foo1() у меня инициализируется переменная сессии, которая должна стать аргументом функции foo2(), которая вызывается при проверке условия в правом операнде
в строке "if(!foo1() && !foo2($_SESSION['test']))".
Так вот того алгоритма, что я надумал - не происходит. скорее всего, потому что я не знаю какого-то нюанса или я просто баран, которые еще ничего не понимает.
Если я туплю. то буду призантелен, если зададите навоядщий вопрос?
 

Кром

Новичок
>и если возвращается true, то проверяется второе условие

>!foo1()

По твоему что означает восклицательный знак? Думаешь, усиление интонации в коде? :)
 

4m@t!c

Александр
neko, Кром, извинте! запаниковал и протупил
получается первая функция возвращает true. а !true == false, а следовательно правый операнд и не будет выплоняться. Спасибо за подсказки.

-~{}~ 27.01.05 16:07:

[OFF]
Ну, дурак - дураком. Хорошо. что в оффтопик. как пятой точкой чувствовал, что туплю. еще раз спасибо.
[/OFF]
 
Сверху