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とかが返ってくると良いと思うんだけど、、っていうか、例外が発生して欲しい。
もし var が配列もしくは Countable インターフェースを実装したオブジェクトではない場合、 1 が返されます。 ひとつ例外があり、var が NULL の場合、 0 が返されます。
| 固定リンク
「PHP」カテゴリの記事
- PHP、smarty、javascript。。。疲れた。。(2010.08.18)
- phpでperlのprint Data::Dumper($data);相当の一行。(2010.07.06)
- PHPのparse_url関数がよくわからない。(2010.05.14)
- PHPで配列の要素数を数えるためのメソッド、count, size_ofは配列じゃなくても「1」や「0」を返すので注意が必要。(2010.05.13)
- PHPの配列(Array)は連想配列(Hash)の可能性がある。(2010.05.13)
この記事へのコメントは終了しました。
コメント
配列かどうかの判定は
is_array() という関数があったりします。
http://php.net/manual/ja/function.is-array.php
is_ナントカ
という関数がPHPにはいくつか用意されていて
型の判定には何かと重宝しますよ
投稿: にるふ | 2010.05.13 18:57