配列への参照の仕方
比較するだけなら、前に書いたように
function equals(&$a, $b, $strict = TRUE) { return $strict ? $a === $b : $a == $b; }
というやり方も。empty の比較版といった感じ。
あと、array_merge でデフォルト値を設定してしまうというソリューションも。
$defaults = array('id' => NULL, 'passwd' => NULL); $params = array_merge($defaults, $_GET); if ($params['id'] !== NULL and $params['passwd'] !== NULL) { do_login($params['id'], $params['passwd']); } else { error_function(); }
個人的にはこれが一番スマートだと思う。
再追記
まぁ、当該記事の array_get_value は結局 typo での E_NOTICE を抑制しちゃうので、デフォルト値に NULL を指定するなら
$id = @$_GET['id']; $passwd = @$_GET['passwd'];
でいいんじゃね、ってのももっともな話だったり。自分で error_handler を指定している場合はちょっと注意が必要だが。
ただ、これだと
$id = @$_GeT['id'];
みたいなパターンでスルーしてしまう。
$id = array_get_value($_GeT, 'id');
なら、E_NOTICE になるので、この点だけ有利かなぁ。