检查$ _POST是否存在

我试图检查$ _POST是否存在,如果它确实打印在另一个string,如果没有,根本不打印。

像这样的东西:

$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; } 

简单。 你有两个select:

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.仅检查在发布数据中是否有某个特定密钥可用

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

大家都在说使用isset() – 这可能会为你工作。

但是,了解两者之间的差异很重要

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

isset($_POST['x'])将在第一个示例中返回false ,但在第二个示例中将返回true ,即使您尝试打印其中一个,两者都会返回一个空值。

如果你的$_POST来自一个用户input的字段/表单,并留空,我相信(我不是100%确定这个值)将是“”但不是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的存在是没有必要的,因为它是从4.1.0版本开始的PHP环境全局variables(现在我们不符合老版本的PHP)。

检查数组键是否正确的方法是array_key_exists()

不同的是,当你有$_POST['variable'] = 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中的一个警告,它不是直接访问超全局variables的好习惯,而是使用filter

 $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']) )是正确的。

你可以使用一个函数并返回,比指定回声更好。

我喜欢检查它是否设置,以及在三元运算符中是否为空。

 // 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;