PHPは、エクスプレッションが真理値をもたらすかどうかを知るために、式if
を評価します。式に現れる関数を実行する以外の方法はありません。この例では
、それは非常に明確である:
if (sqrt(4) > 1)
PHPはもちろん機能sqrt
を呼び出す必要があり、あなたの関数test
もecho
を実行しながら、それはこの場合には、それは、副作用なしで機能である以外。第2に、値を返しますが、test
は戻りません。しかし、PHPは関数を実行することでしか見つけられません。 booleanに変換する場合、次の値がFALSE
とみなされ
:
- ブール
FALSE
自体式は、一般的には何も返すことができますが、PHPは何it considers truthy or falsyにルールを持っていることを 注意
- 整数0(
- )float 0.0(zero)
- 空の文字列、および文字列「0」
- ゼロ要素
- ゼロメンバ変数を持つオブジェクトの配列(PHP 4のみ)
NULL
(未設定変数を含む)特殊なタイプ
- のSimpleXML空のタグから作成されたオブジェクト
その他の値はすべてTRUE
(すべてのリソースを含む)と見なされます。
関数return
ステートメントを実行せずに実行した場合には、返される値はnull
ので、if
条件は、上記の規則に従ってfalsyあろう。
ここでは 'echo" somedata "は完全に無関係です。関数は空の本体も持つことができます - 'return'を得られない限り、関数が何をしているかはまったく関係ありません。 –
@MarcinOrlowskiは、関数が 'exit()'(またはそれに相当する 'die()')を実行するか、あるいは例外をスローする場合を除いてもちろんです。通常の実行フローを破るいくつかの[その他の創造的な方法](http://stackoverflow.com/questions/21457734/how-to-stop-php-code-execution)があります。 – trincot
このような場合、 'if()'は評価されることはありませんので、私たちは通常の流れを想定していても問題はありません。マシンをオフにしたり、PHPプロセスを強制終了すると、この 'if()'に正確なタイミングで影響を与える可能性がありますが、これは気にしません。 –