今まで使っていなかったPHPのテクニック

 長いこと気がついていなかった書き方をメモ

代入された値を返す

 代入式をカッコで囲むと代入された値を返す。条件式の中で二重のカッコは不要。

<?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);
}

 みたいな書き方もできる。でも==を=と書き間違えているように一瞬見えるな。