Функция XeonCross 'v является сокращением для часто используемых:
$val= isset($arr['elm']) ? $arr['elm'] : 'default'
, чтобы избежать страшного уведомления «Неопределенный индекс: вяз».Хорошая вспомогательная функция будет выглядеть так:
function ifset(&$v1, $v2 = null) {
return isset($v1) ? $v1 : $v2;
}
, как предложил Xeoncross, так что вы можете написать гораздо более приятную
$val = ifset($arr['elm'],'default')
, однако в этом есть много интересных (?) Уловоклюбимый «язык», который мы называем PHP:
внутри функции ifset, $ v1 кажется UNSET, поэтому он правильно возвращает значение $ v2, и вы можете заключить, что ifset работает нормально.Но после этого $ arr ['elm'] автоматически устанавливается в NULL.Итак, рассмотрим следующее:
function wtf(&$v) {
if (isset($v))
echo "It is set";
else
echo "It is NOT set";
}
$p=[];
wtf($p['notexist']); => It is NOT set
$p; => [ 'notexist' => NULL ]
Но это еще одно заблуждение, поскольку функция isset () возвращает false и для значений NULL:
$x=NULL;
isset($x) => false... huh??
Мы ожидали этого?ну .. это есть в документации, так что это тоже по замыслу.Добро пожаловать в чудесный мир php.