isset()
関数で多次元配列のキー存在チェックをする際、たまに
<?php
if (isset($a) && isset($a['foo']) && isset($a['foo']['bar'])) {
// do something
}
と、上から丁寧にチェックしているソースを見かけますが
この場合、途中のチェックは不要で
<?php
if (isset($a['foo']['bar'])) {
// do something
}
とだけ書けば大丈夫です。
検証ソース
test.php
<?php
error_reporting(E_ALL);
var_dump(isset($a['foo']['bar']));
$a = array();
var_dump(isset($a['foo']['bar']));
$a['foo'] = array();
var_dump(isset($a['foo']['bar']));
$a['foo']['bar'] = 1;
var_dump(isset($a['foo']['bar']));
実行結果
$ php test.php
bool(false)
bool(false)
bool(false)
bool(true)
途中 $a
や $a['foo']
が未定義でも、Undefined variable の Noticeはでません。