長いこと気がついていなかった書き方をメモ
代入された値を返す
代入式をカッコで囲むと代入された値を返す。条件式の中で二重のカッコは不要。
<?php echo "true\t"; var_dump($a = true); echo "false\t"; var_dump($a = false); echo "1\t"; var_dump($a = 1); echo "nanchara\t"; var_dump($a = "nanchara"); ?>
結果。
kazz@oscar ~/bin/test# php test25.php true bool(true) false bool(false) 1 int(1) nanchara string(8) "nanchara" kazz@oscar ~/bin/test#
条件式をシンプルに書けそう。
trueとfalse
明確にtrueの場合だけがtrueだと思っていたが、false系以外はtrueに変換されるらしい。
boolean に変換する場合、次の値は FALSE とみなされます。
- boolean の FALSE
- integer の 0 (ゼロ)
- float の 0.
- 0 (ゼロ)
- 空の文字列、 および文字列の "0"
- 要素の数がゼロである 配列
- 特別な値 NULL (値がセットされていない変数を含む)
- 空のタグから作成された SimpleXML オブジェクト
の他の値は全て TRUE とみなされます (全ての resource および NAN を含みます)。
これも条件式を簡単に書けそう。
以上2つを合わせて
if($a=function_a($b)){ var_dump($a); }
みたいな書き方もできる。でも==を=と書き間違えているように一瞬見えるな。