2008年10月20日月曜日

PHPの比較関数と型

empty($a) と is_null($a) が違う結果を返す $a は
$aempty($a)is_null($a)
""TRUEFALSE
array()TRUEFALSE
falseTRUEFALSE
"0"TRUEFALSE
0TRUEFALSE


isset($a) と (boolean) ($a) が違う結果を返す $a は
$aisset($a)(boolean) ($a)
""TRUEFALSE
array()TRUEFALSE
falseTRUEFALSE
"0"TRUEFALSE
0TRUEFALSE


また、isset() と empty() は undefined な変数を評価しても
「Notice: Undefined variable」が発生しないので
緩い評価には「empty()」厳密な評価には「isset()」と
「!演算子」を併用することで使い分けが出来る。

2008年10月15日水曜日

配列への追加(PHP 5)

検証した環境は5.2。

$a = array("a" => 1, "b" => 2, "c" => 3);
$b = array("b" => 20, "c" => 30, "d" => 40);
として

($a + $b) === array("a" => 1, "b" => 2, "c" => 3, "d" => 40)
($b + $a) === array("b" => 20, "c" => 30, "d" => 40, "a" => 1)
array_merge($a, $b) === array("a" => 1, "b" => 20, "c" => 30, "d" => 40)
array_merge($b, $a) === array("b" => 2, "c" => 3, "d" => 40, "a" => 1)
が成立する。

+ 演算子は遠慮がちで、関数 array_merge はわりと強気だというお話。