Хехе, тъй като съвсем наскоро в миналата тема за условностите си играх със задаване на стойности на променливи в структурата на други елементи, нямаше как да се излъжа:
true
true
false
Обяснявам защо. Редът
GeSHi (PHP):
$v = foo($v)
не е проверка на стойност, а е задаване на променлива (обърнете внимание на броя на знаците "=" - имаме само 1, а не 2 или 3), и въпреки това, че се намира в структурата на if, задаването на променливата се изпълнява. Така че, при изпълнението на реда
GeSHi (PHP):
echo ($v = foo
($v) or bar
($v)) ?
'true ' : 'false ';
първо имаме задаване на променливата $v да бъде равна на резултата от функцията foo($v). При изпълнението на тази функция, на екрана се принтира "true", тъй като текущо $v е true, а функцията връща стойност false (обратното на стойността на $v), което застава като стойност на $v. Т.е., оттук нататък $v е false. При изпълнението на bar($v) имаме принтиране на "true", тъй като $v текущо е false. Така, в крайна сметка в if-а остава "false or false", което изкарва на екрана "false". Много интересно ми стана напоследък задаването на стойности на променливи на нестандартни места