1
//In PHP,
$a ? $b : echo $c  //does not work but 
$a ? $b : print $c //works

これには理由がありますか?

ところで、notPHPのキーワードですか?

4

5 に答える 5

2

echo は関数ではなく、言語構造です。何も返しません。別のvoid関数は常に "return" しNULLます。これが、コンパイラがエラーをスローする理由unexpected T_ECHOです。

printfただし、 は関数であり、常に を返します1

たとえば、これは機能します:

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

$a ? $b : echo2('foo');
于 2010-03-10T09:50:21.600 に答える
1

echo戻り値はありprintません。

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

 int print  ( string $arg  )

php.netから

この場合、三項演算子は式を期待するため、これは重要です

(expr1) ? (expr2) : (expr3)

echo "something"表現として分類することはできません。

notPHP キーワードではありません。

于 2010-03-10T09:47:40.587 に答える
0

notPHPにはキーワードがありません

于 2010-03-10T09:48:35.877 に答える
0

echo は言語構造で、print は関数だからですか?

于 2010-03-10T09:51:29.380 に答える
-1

戻り値。あなたが書いた場合

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

$a が false の場合、$x はどのような値になりますか?

print は常に 1 を返します。echo は何も返しません。

于 2010-03-10T09:45:09.837 に答える