issetを使うよりarray_key_existsで配列要素の有無を確認すべき。

PHP
By: Pedro Vera

よく配列に要素が入っているかを確認するのに
issetを使って以下のようにやりませんか?

if(!isset($_POST["hoge"])){
...
}

これは、実はあんまり良くないらしいです。
結論から言うと、以下のようにしたほうが良い。

if(!array_key_exists("hoge",$_POST)){
...
}

理由としては、配列の要素はあるが
値がnullの場合の挙動が違うから。

issetの場合は、値がnullだとfalse
array_key_existsの場合はtrue
と判定されるらしい。

純粋に配列要素が存在するかを知りたいなら
array_key_existsを使うほうが無難というわけ。

但し、速度に違いがあるらしい。
issetの方がarray_key_existsよりも3倍はやい
というエントリーを書いてる人もいたので
よっぽど急ぐときには変更したほうがいのかも。

とはいえ、そんなに処理速度が問題になることって
ないと思うからarray_key_existsでいいんじゃないかな。

というちょっとした話。

タイトルとURLをコピーしました