以下のコードは、printステートメントのみで機能します
file_exists('index.php') || print "hi"; \\ works fine and prints hi
file_exists('index.php') || echo "hi"; \\ error
なぜ機能するのに解析エラーprint
が発生するのですか?echo
以下のコードは、printステートメントのみで機能します
file_exists('index.php') || print "hi"; \\ works fine and prints hi
file_exists('index.php') || echo "hi"; \\ error
なぜ機能するのに解析エラーprint
が発生するのですか?echo
これは、echo
が言語構造でprint
あり、組み込み関数であるためです。
使用も同じ理由echo
よりもわずかに高速ですprint
が、式内で使用するとパーサーエラーが発生します。
バグレポートも参照してください:https ://bugs.php.net/bug.php?id = 15866
これは、printがブール値を返し、echoが何も返さないため、ブール式で使用できないためだと思います。
エコーとプリントは似ているように見えますが、わずかに異なります
印刷-1エコー-なし
上記のステートメントで、ファイルが存在する場合、何も表示されません
存在しない場合、次のステップはOR Print、Printは常にブール値を返します
printは1を返します。つまり、trueechoは何も返しません。trueを返すためにfile_existsと出力の両方を必要とするorステートメントがあるようです。