Использование троичного просто, читабельно и чисто:
Предварительно PHP 7
Присвойте переменную значению другой переменной, если она установлена, в противном случае присвойте null
(или любое другое значение default , которое вам нужно):
$newVariable = isset($thePotentialData) ? $thePotentialData : null;
PHP 7 +
То же самое, за исключением использования Null Coalescing Operator . Больше нет необходимости вызывать isset()
, поскольку он встроен, и нет необходимости предоставлять переменную для возврата, поскольку предполагается, что она возвращает значение проверяемой переменной:
$newVariable = $thePotentialData ?? null;
Оба остановят Уведомления от вопроса ОП, а оба являются точным эквивалентом:
if (isset($thePotentialData)) {
$newVariable = $thePotentialData;
} else {
$newVariable = null;
}
Если вам не требуется устанавливать новую переменную, вы можете напрямую использовать возвращаемое значение троичной переменной, например, с echo
, аргументами функции и т. Д .:
Эхо:
echo 'Your name is: ' . isset($name) ? $name : 'You did not provide one';
Функция:
$foreName = getForeName(isset($userId) ? $userId : null);
function getForeName($userId)
{
if ($userId === null) {
// Etc
}
}
Вышеописанное будет работать точно так же с массивами, включая сеансы и т. Д., Заменяя проверяемую переменную, например ::
$_SESSION['checkMe']
или сколько вам нужно глубоких уровней, например ::1049*
$clients['personal']['address']['postcode']
Подавление:
Можно подавить уведомления PHP с помощью @
или уменьшить уровень сообщений об ошибках, но это не устраняет проблему , оно просто останавливает его сообщение в журнале ошибок. Это означает, что ваш код все еще пытался использовать переменную, которая не была установлена, что может означать или не означать, что что-то не работает должным образом - в зависимости от того, насколько важным является отсутствующее значение.
Вы должны действительно проверять эту проблему и обрабатывать ее соответствующим образом, либо отправляя другое сообщение, либо даже просто возвращая нулевое значение для всего остального, чтобы определить точное состояние.
Если вы просто заботитесь о том, чтобы Уведомление не было в журнале ошибок, то в качестве опции вы можете просто проигнорировать журнал ошибок.