Если я хочу повторно заполнить форму с помощью значений $ _POST, например (для этой проблемы есть другие приложения, но это самый простой), я должен всегда проверять, установлен ли индекс $ _POST, прежде чем я смогу использовать его значение, или я получу УВЕДОМЛЕНИЕ от php.
Например:
echo '<input type="text" name="somefield" value="';
if(isset($_POST['somefield']))
{ echo $_POST['somefield']; }
echo '">';
Со сложными формами, это кажется громоздким и как много повторений. Так что я подумал, давайте извлечь функцию:
function varcheck_isset($vartocheck)
{
if(isset($vartocheck))
{return $vartocheck;}
else
{return '';}
}
, а затем сделать
echo '<input type="text" name="somefield" value="';
echo varcheck_isset($_POST['somefield']);
echo '">';
делает код лучше.
Но когда я делаю это и $ _POST [ 'SomeField'] не установлен, он говорит
Примечание: Не определено индекс: SomeField
:-(
Кто-нибудь получил идея или предложения, как это сделать?
EDIT:
Вот что я в конечном итоге делает - я принял ответ Organgepill, всего ее немного модифицировал:
function arraycheck_isset($arraytocheck, $indextocheck)
{
if(isset($arraytocheck) && is_array($arraytocheck) && array_key_exists($indextocheck, $arraytocheck))
{ return $arraytocheck[$vartocheck];}
else
{ return '';}
}
Комментарий ниже по elclanrs был также довольно хорошо. просто написать:
echo $_POST['field'] ?: '';
Лично мне нравится, не сокращенная версия лучше, хотя, потому что я также могу иметь случаи, когда мне нужно проверить для других вещей, кроме Исети() - например, регулярного выражения. Таким образом, я поддерживаю это последовательно, каждый раз выполняя функцию.
В современном PHP вы можете сделать это: 'echo $ _POST ['field']?: ''' – elclanrs
@elclanrs, это хорошее предложение, спасибо! Почему бы не опубликовать это как ответ? – olli