Зачем or
возвращать что-нибудь? or
- нормальный логический оператор. $a or $b
равно true
, если $a
или $b
равно true
и false
в противном случае.
Разница между ||
и or
заключается в том, что or
имеет более низкий операторский предшественник, даже ниже, чем =
. Вот почему
$result = mysql_query($query) or die();
совпадает с
($result = mysql_query($query)) or (die());
тогда * * тысяча двадцать-одна
$result = mysql_query($query) || die();
совпадает с
$result = (mysql_query($query) || die());
В вашем случае
echo $name or "Anonymous";
получает
(echo $name) or ("Anonymous");
Вероятно, вы ищете троичный оператор:
echo $name ?: 'Anonymous';
Вышеописанное будет работать с PHP 5.3, если вы используете только PHP 5.2:
echo $name ? $name : 'Anonymous';