MW211 EXIT

devlog
PHP/isset()の位置
2014年01月25日
isset()との複合条件の場合、ないかもしれないものを条件にしてしまっていいのか?
ふと不安に思ってしまうことがある。

一旦、isset()で存在を確認してから、改めてそれを判定した方が安全なのではないか?
という疑問だ。

┌──────────────────────────────────────┐
│if ((isset($a)) && ($a == 1)) {                                             │
└──────────────────────────────────────┘
「$a」が未定義の場合、上記は問題ないけど、下記はエラーとなってしまう。
┌──────────────────────────────────────┐
│if (($a == 1) && (isset($a))) {                                              │
└──────────────────────────────────────┘

一般的にAND条件は、左から判定していき、
偽がみつかった時点で判定を打ち切る。

つまり前者は、下記のイメージと同じになる。
┌──────────────────────────────────────┐
│if (isset($a)) {                                                            │
│    if ($a == 1) {                                                          │
└──────────────────────────────────────┘

ということで、順番さえ間違えなければ大丈夫。
分類:PHP