Home > info > 比較演算子の困った仕様

比較演算子の困った仕様

以前から分かってたことなのですが、比較演算子の仕様がかなり不便です。何が不便かっていうと、0 と null の扱い。

$v = 0 で
$v == null が true

$v = null で
$v == 0 も true

なので、

同じ $v = 0 でも、
if ($v == 0) {
} elseif ($v == null) {
}

と、

if ($v == null) {
} elseif ($v == 0) {
}

で結果が違ったりする。勿論 Smarty の {if,elseif,else} 関数でも一緒。

結局、思った通りに動作させるには、PHP4 以上という縛りで、
$v === 0 と、型までチェックするようにするしかない。

しかし、Smarty の {if,elseif,else} は、=== 演算子をサポートしていないので、結局 $v == 0 より $v == null を先に評価させるしかない。

info ,

  1. コメントはまだありません。
  1. No trackbacks yet.