Проверьте, существует ли $ _POST

Я пытаюсь проверить, существует ли $ _POST, и если это произойдет, напечатайте его внутри другой строки, если нет, не печатайте вообще.

что-то вроде этого:

$fromPerson = '+from%3A'.$_POST['fromPerson']; function fromPerson() { if !($_POST['fromPerson']) { print '' } else { print $fromPerson }; } $newString = fromPerson(); 

Любая помощь будет замечательной!

 if( isset($_POST['fromPerson']) ) { $fromPerson = '+from%3A'.$_POST['fromPerson']; echo $fromPerson; } 

Просто. У вас есть два варианта:

1. Проверьте, есть ли вообще какие-либо данные

 //Note: This resolves as true even if all $_POST values are empty strings if (!empty($_POST)) { // handle post data $fromPerson = '+from%3A'.$_POST['fromPerson']; echo $fromPerson; } 

(ИЛИ)

2. Проверяйте, доступен ли только PARTICULAR Key в почтовых данных

 if (isset($_POST['fromPerson']) ) { $fromPerson = '+from%3A'.$_POST['fromPerson']; echo $fromPerson; } 

Все говорят использовать isset () – это, вероятно, сработает для вас.

Однако важно понимать разницу между

$_POST['x'] = NULL; и $_POST['x'] = '';

isset($_POST['x']) вернет false в первом примере, но вернет true во втором, даже если вы попытаетесь распечатать одно, оба вернут пустое значение.

Если ваш $_POST исходит из введенного пользователем поля / формы и остается пустым, я ВЕРЮ (на этот раз я не уверен на 100%), что значение будет «", но NOT NULL.

Даже если это предположение неверно (кто-то, пожалуйста, поправьте меня, если я ошибаюсь!) Выше все еще хорошо знать для будущего использования.

Удивленный он не упоминался

 if($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['fromPerson'])){ 
 isset($_POST['fromPerson']) 
  • В этом случае использование метода isset не подходит.

Согласно документации PHP: http://php.net/manual/en/function.array-key-exists.php
(см. пример # 2 array_key_exists () vs isset () )
Метод array_key_exists предназначен для проверки присутствия ключа в массиве.

Поэтому код в вопросе можно изменить следующим образом:

 function fromPerson() { if (array_key_exists('fromPerson', $_POST) == FALSE) { return ''; } else { return '+from%3A'.$_POST['fromPerson']; }; } $newString = fromPerson(); 

  • Проверка наличия массива $ _POST не требуется, поскольку это глобальная переменная среды PHP с версии 4.1.0 (в настоящее время мы не встречаем старые версии PHP).

Правильный способ проверки наличия ключа массива – это функция array_key_exists()

Разница в том, что когда у вас $_POST['variable'] = null это означает, что ключ существует и отправляется, но значение равно null

Другой вариант – isset() который будет проверять, существует ли ключ массива и если он был установлен

Последний вариант – использовать empty() который будет проверять, существует ли массив, если он установлен, и если значение не считается пустым.

Примеры:

 $arr = [ 'a' => null, 'b' => '', 'c' => 1 ]; array_key_exists('a', $arr); // true isset($arr['a']); // false empty($arr['a']); // true array_key_exists('b', $arr); // true isset($arr['b']); // true empty($arr['b']); // true array_key_exists('c', $arr); // true isset($arr['c']); // true empty($arr['c']); // false 

Что касается вашего вопроса

Правильный способ проверки отправки значения – использовать array_key_exists () с проверкой метода запроса

 if ($_SERVER['REQUEST_METHOD'] == 'POST' && array_key_exists('fromPerson', $_POST) { // logic } 

Но некоторые случаи зависят от вашей логики, где isset() и empty() могут быть хорошими.

Все методы на самом деле обескуражены, это предупреждение в Netbeans 7.4, и, безусловно, является хорошей практикой не получать доступ к сверхглобальным переменным напрямую, вместо этого использовать фильтр

 $fromPerson = filter_input(INPUT_POST, 'fromPerson', FILTER_DEFAULT); if($fromPerson === NULL) { /*$fromPerson is not present*/ } else{ /*present*/ } var_dump($fromPerson);exit(0); 

Попробуйте isset ($_POST['fromPerson']) ?

 if (is_array($_POST) && array_key_exists('fromPerson', $_POST)) { echo 'blah' . $_POST['fromPerson']; } 

Пытаться

 if (isset($_POST['fromPerson']) && $_POST['fromPerson'] != "") { echo "Cool"; } 

if( isset($_POST['fromPerson']) ) является правильным.

Вы можете использовать функцию и возвращать, а затем направлять эхо.

Мне нравится проверять, если он iset и если он пуст в тройном операторе.

 // POST variable check $userID = (isset( $_POST['userID'] ) && !empty( $_POST['userID'] )) ? $_POST['userID'] : null; $line = (isset( $_POST['line'] ) && !empty( $_POST['line'] )) ? $_POST['line'] : null; $message = (isset( $_POST['message'] ) && !empty( $_POST['message'] )) ? $_POST['message'] : null; $source = (isset( $_POST['source'] ) && !empty( $_POST['source'] )) ? $_POST['source'] : null; $version = (isset( $_POST['version'] ) && !empty( $_POST['version'] )) ? $_POST['version'] : null; $release = (isset( $_POST['release'] ) && !empty( $_POST['release'] )) ? $_POST['release'] : null;