[PHP]empty()

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

[PHP]empty()

Zend Frameworkのソースを読んでて初めて知った…

PHP: empty - Manual

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

トラックバック

コメント

コメントの投稿

お名前
コメント
編集キー
 
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。