« PHPの配列(Array)は連想配列(Hash)の可能性がある。 | トップページ | PHPのparse_url関数がよくわからない。 »

2010.05.13

PHPで配列の要素数を数えるためのメソッド、count, size_ofは配列じゃなくても「1」や「0」を返すので注意が必要。

なんかの間違いで、配列じゃない変数を配列のように扱ってしまった場合、
例えば、forループ文を書いたときに、

for($i=0; $i<count($not_array); $i++){
$not_array[$i];
}

ってやると、countが1を返してしまうので、$not_array[$i];のところまで実行されてしまう。
そうすると、何でエラーが表示されたのかが??の状態になってしまう。

また、必ず1を返すわけではなくて、NULLの場合は0を返す。

-1とかが返ってくると良いと思うんだけど、、っていうか、例外が発生して欲しい。

PHP: count - Manual

もし var が配列もしくは Countable インターフェースを実装したオブジェクトではない場合、 1 が返されます。 ひとつ例外があり、var が NULL の場合、 0 が返されます。

|

« PHPの配列(Array)は連想配列(Hash)の可能性がある。 | トップページ | PHPのparse_url関数がよくわからない。 »

PHP」カテゴリの記事

コメント

配列かどうかの判定は
is_array() という関数があったりします。
http://php.net/manual/ja/function.is-array.php

is_ナントカ
という関数がPHPにはいくつか用意されていて
型の判定には何かと重宝しますよtaurus

投稿: にるふ | 2010.05.13 18:57

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/22269/48349071

この記事へのトラックバック一覧です: PHPで配列の要素数を数えるためのメソッド、count, size_ofは配列じゃなくても「1」や「0」を返すので注意が必要。:

« PHPの配列(Array)は連想配列(Hash)の可能性がある。 | トップページ | PHPのparse_url関数がよくわからない。 »