Имеются ли в PHP какие-либо побочные эффекты (теоретически) при инициализации переменной в условии if?

Столкнулся с проблемой.
Делаю плагин на Livestreet (CMS), и есть код следующего типа.
if($sFileWebFoto=somefunc() &&
$sFileWebAvatar=somefunc()) {
   //...
}

Но он не работает. Первое условие всегда возвращает true в $sFileWebFoto. Если же объявить переменные вне условий if, все будет ок (должна быть строка). Второе условие возвращает при этом строку.
Проблема не в функциях, указанных выше (100% рабочие функции ядра). Ранее я никогда замечал такого поведения. И собственно вопрос: какую тонкость я упустил?

Заранее спасибо за ответы!
  • Вопрос задан
  • 3168 просмотров
Решения вопроса 2
lexxpavlov
@lexxpavlov
Программист, преподаватель
Вы спрашивали, имеются ли в PHP какие-либо побочные эффекты. Имеются.
Если первое условие будет ложью, то второе условие даже и не запустится вовсе:
function first()  { echo "first "; return false; }
function second() { echo "second "; return true; }
if (first() && second()) echo "OK"; else echo "Bad";

выведет "first Bad", а слово "second" не выведется, что значит - вторая функция не запустилась.
Так же не запустится второе условие при использовании ИЛИ, если первое условие вернуло истину.
И правда, зачем проверять второе условие, если итоговый результат выражения уже известен на первом условии?
Ответ написан
Heian
@Heian Автор вопроса
Ашот
Проблема, описанная в вопросе, была в неверном приоритете операторов.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы