2016-06-01 10 views

答えて

3

PHPは、エクスプレッションが真理値をもたらすかどうかを知るために、式ifを評価します。式に現れる関数を実行する以外の方法はありません。この例では

、それは非常に明確である:

if (sqrt(4) > 1) 

PHPはもちろん機能sqrtを呼び出す必要があり、あなたの関数testechoを実行しながら、それはこの場合には、それは、副作用なしで機能である以外。第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あろう。

+0

ここでは 'echo" somedata "は完全に無関係です。関数は空の本体も持つことができます - 'return'を得られない限り、関数が何をしているかはまったく関係ありません。 –

+0

@MarcinOrlowskiは、関数が 'exit()'(またはそれに相当する 'die()')を実行するか、あるいは例外をスローする場合を除いてもちろんです。通常の実行フローを破るいくつかの[その他の創造的な方法](http://stackoverflow.com/questions/21457734/how-to-stop-php-code-execution)があります。 – trincot

+0

このような場合、 'if()'は評価されることはありませんので、私たちは通常の流れを想定していても問題はありません。マシンをオフにしたり、PHPプロセスを強制終了すると、この 'if()'に正確なタイミングで影響を与える可能性がありますが、これは気にしません。 –

関連する問題