[PHP]empty()
- 2007-08-15
- カテゴリ: Server Side
- タグ: PHP Tips
Zend Frameworkのソースを読んでて初めて知った…
bool
empty( mixed $var )変数が空であるかどうかを検査する
こんな便利なものがあったとは。
というか、何で今まで気づかなかったんだろう。
引数
何でもいいから変数を渡す。変数は定義されていなくてもよい。ただし、渡すのは変数じゃなくちゃ駄目で、値や関数の返り値は渡せない。
注意:
empty()は、変数のみをチェックし、それ以外の値を チェックすると文法エラーを生成します。つまり、次の例は動作しません:empty(trim($name))
empty()は、変数が設定されていないときに警告が生成 されないことを除けば、(boolean) var の逆です。
変数が設定されていないときに警告を吐かないのがいい。
返り値
空文字列とか0とか未定義とかだとTRUEが返る。
varが空でないか、0でない値であれば
FALSEを返します。
- 次のような値は空であると考えられます。:
- "" (空文字列)
- 0 (0 は整数)
- "0" (0は文字列)
- NULL
- FALSE
- array() (空の配列)
- var $var;(変数が宣言されているが、クラスの中で値が設定されていない)
使い方
何が便利かって言うと、今までわざわざ↓のように書いていたものが、
if (!isset($str) || ($str == '')) $str = 'empty'; if (isset($arr['key'] && ($arr['key'] != 0)) $value = $arr['key'];
↓で済む。
if (empty($str)) $str = 'empty'; if (!empty($arr['key']) $value = $arr['key'];
上の例はあまり使う機会がないんだけど、下の例のように配列の値をチェックする機会は多い。
わざわざisset()をかませなきゃ、未定義の配列キーにアクセスしたときにNoticeが発生して気持ち悪かったけど、empty()は、変数が未定義でもNoticeを吐かないから便利。
$_POSTとか$paramみたいに、キーが設定されているかどうかわからない配列の値をチェックしなきゃいけないときは便利そうだ。
$name = !empty($_POST['name']) ? $_POST['name'] : 'nobody'; $age = !empty($_POST['age']) ? $_POST['age'] : 0; $email = !empty($_POST['email']) ? $_POST['email'] : 'none';
トラックバックURL
- http://liosk.blog103.fc2.com/tb.php/28-f9adbfb9

