Проверьте, существует ли $ POST
Я пытаюсь проверить, существует ли $_POST, и если это так, распечатайте его внутри другой строки, если нет, не печатайте вообще.
что-то вроде этого:
$fromPerson = '+from%3A'.$_POST['fromPerson'];
function fromPerson() {
if !($_POST['fromPerson']) {
print ''
} else {
print $fromPerson
};
}
$newString = fromPerson();
любая помощь будет здорово!
13 ответов:
if( isset($_POST['fromPerson']) ) { $fromPerson = '+from%3A'.$_POST['fromPerson']; echo $fromPerson; }
простой. У вас есть два варианта:
1. Проверьте, есть ли вообще какие-либо данные post
//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. Только проверьте, доступен ли конкретный ключ в post data
if (isset($_POST['fromPerson']) ) { $fromPerson = '+from%3A'.$_POST['fromPerson']; echo $fromPerson; }
все говорят, чтобы использовать isset () - который, вероятно, будет работать для вас.
однако, важно, что вы понимаете разницу между
$_POST['x'] = NULL;и$_POST['x'] = '';
isset($_POST['x'])вернутсяfalseна первом примере, но вернетсяtrueна втором, даже если вы попытаетесь распечатать любой из них, оба вернут пустое значение.если
$_POSTисходит из введенного пользователем поля / формы и остается пустым, I Поверьте (я не уверен на 100% в этом, хотя), что значение будет"", но не NULL.даже если это предположение неверно (кто-то пожалуйста, поправьте меня, если я ошибаюсь!) выше все еще хорошо знать для будущего использования.
удивлен, что это не было упомянуто
if($_SERVER['REQUEST_METHOD'] == 'POST' && 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Что касается вашего вопроса
правильный способ проверить, было ли значение send-использовать 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']) )прав.вы можете использовать функцию и возврат, лучше, чем направляя Эхо.
Мне нравится проверять, если он isset и если он пуст в тернарном операторе.
// 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;
Comments