2013年3月16日土曜日

boolean型について考える

boolean型は真と偽の2つの値だけをとる最も単純な型です。
それゆえに、私を含めて多くの方はこの型を多用しているのではないでしょうか。
今回はそんなboolean型について考えます。

まずはbooleanで偽と扱われる値について
  • boolean の FALSE
  • integer の 0 (ゼロ)
  • float の 0.0 (ゼロ)
  • 空の文字列、 および文字列の "0"
  • 要素の数がゼロである 配列
  • メンバ変数の数がゼロである オブジェクト (PHP 4のみ)
  • 特別な値 NULL (値がセットされていない変数を含む)
  • 空のタグから作成された SimpleXML オブジェクト 
ここで注目すべき点はintegerおよび文字列の0です。
つまり、変数の値が0でないことが保証できればboolean型で空文字のチェックができます。

サンプルコード 実行結果
NULL : bool(false)
"" : bool(false)
"0" : bool(false)
"a" : bool(true)
0 : bool(false)
1 : bool(true)
+1 : bool(true)
-1 : bool(true)
0x0A : bool(true)
012 : bool(true)
0.1 : bool(true)
1e3 : bool(true)
1e-3 : bool(true)
array("") : bool(false)
array("a") : bool(true)
array(array("a")) : bool(true)
TRUE : bool(true)
FALSE : bool(false)
object : bool(true)
fopen : bool(true)
では、肝心のベンチマークを取ってみましょう。

サンプルコード 実行結果
BenchMark 1     average:0.0022930383682251
BenchMark 2     average:0.0024604082107544
そして、最後に注意点をひとつ。未定義の変数を判別しようとしますと…。

サンプルコード 実行結果
Notice: Undefined variable: x in C:\xampp\htdocs\test.php on line 2
と、Noticeが出てしまいます。
この場合は素直にissetやemptyを使ったほうが良いでしょう。

0 件のコメント:

コメントを投稿