检查$ _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;