$ a? $ b: echo $ c не работает, но $ a? $ b: print $ c работает в PHP - PullRequest
1 голос
/ 10 марта 2010
//In PHP,
$a ? $b : echo $c  //does not work but 
$a ? $b : print $c //works

Есть ли причина для этого?

Кстати, это not ключевое слово в PHP?

Ответы [ 5 ]

2 голосов
/ 10 марта 2010

echo - это не функция, это языковая конструкция. Она ничего не возвращает. Другие void функции всегда «возвращают» NULL. Поэтому компилятор выдает ошибку unexpected T_ECHO.

printf, однако, является функцией и всегда возвращает 1.

Например, это будет работать:

function echo2($e)
{
    echo($e);
}

$a ? $b : echo2('foo');
1 голос
/ 10 марта 2010

echo не имеет возвращаемого значения, print имеет!

 void echo  ( string $arg1  [, string $...  ] )

 int print  ( string $arg  )

из php.net

Это имеет значение в этом случае, поскольку троичный оператор ожидает выражений

(expr1) ? (expr2) : (expr3)

echo "something" нельзя классифицировать как выражение.

not не является ключевым словом PHP .

0 голосов
/ 10 марта 2010

Это потому, что echo - это языковая конструкция, а print - функция?

0 голосов
/ 10 марта 2010

в PHP нет ключевого слова not

0 голосов
/ 10 марта 2010

возвращаемое значение.если вы написали

  $x = $a?$b:echo $c;

, какое значение $ x получит на ложном значении $ a?

print всегда возвращает 1. echo ничего не возвращает.

...