empty()に0を渡すとfalseになる

例えばこんなコードを書いているとき

<?php
    function edit($id=null) {
        if (empty($id)) {
            //パラメータが足りなかったらエラーページへ飛ばす
            $this->layout = "error";
            return;
        }

正規データとして$idに「0」が渡ってきたとしても、それだとempty()でfalseを返してしまう。
まあ、それはempty()の仕様なので正しい動きなんだけども。

var が空でないか、0でない値であれば FALSE を返します。
次のような値は空であると考えられます。:

  • "" (空文字列)
  • 0 (0 は整数)
  • "0" (0は文字列)
  • NULL
  • FALSE
  • array() (空の配列)
  • var $var;(変数が宣言されているが、クラスの中で値が設定されていない)

PHP: empty

キー項目に0が入っていることは普通あまりないことだと思うけど、可能性としてない話ではないので一応メモ。

><