我正在尝试检查是否存在$ _POST,如果存在,则将其打印在另一个字符串中,如果不存在,则根本不打印.
这样的事情:
$fromPerson = '+from%3A'.$_POST['fromPerson'];
function fromPerson() {
if !($_POST['fromPerson']) {
print ''
} else {
print $fromPerson
};
}
$newString = fromPerson();
Run Code Online (Sandbox Code Playgroud)
任何帮助都会很棒!
ehm*_*mad 154
if( isset($_POST['fromPerson']) )
{
$fromPerson = '+from%3A'.$_POST['fromPerson'];
echo $fromPerson;
}
Run Code Online (Sandbox Code Playgroud)
Dhe*_*kar 54
//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;
}
Run Code Online (Sandbox Code Playgroud)
if (isset($_POST['fromPerson']) )
{
$fromPerson = '+from%3A'.$_POST['fromPerson'];
echo $fromPerson;
}
Run Code Online (Sandbox Code Playgroud)
小智 32
每个人都说要使用isset() - 这可能对你有用.
但是,了解它们之间的区别非常重要
$_POST['x'] = NULL; 和 $_POST['x'] = '';
isset($_POST['x'])将返回false第一个示例,但将返回true第二个示例,即使您尝试打印其中任何一个,两者都将返回空值.
如果您$_POST来自用户输入的字段/表单并且留空,我相信(我不是100%肯定),该值将是""但不是NULL.
即使这个假设是不正确的(如果我错了,有人请纠正我!)以上对于将来使用仍然是好的.
Joh*_*lia 29
惊讶它没有被提及
if($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['fromPerson'])){
Run Code Online (Sandbox Code Playgroud)
Rob*_*ert 12
检查数组键是否存在的正确方法是函数 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
Run Code Online (Sandbox Code Playgroud)
关于你的问题
检查值是否已发送的正确方法是使用array_key_exists()并检查请求方法
if ($_SERVER['REQUEST_METHOD'] == 'POST' && array_key_exists('fromPerson', $_POST)
{
// logic
}
Run Code Online (Sandbox Code Playgroud)
但是有些情况取决于你的逻辑在哪里isset(),empty()也可以很好.
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();
Run Code Online (Sandbox Code Playgroud)
实际上不鼓励使用所有方法,这是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);
Run Code Online (Sandbox Code Playgroud)
尝试
if (isset($_POST['fromPerson']) && $_POST['fromPerson'] != "") {
echo "Cool";
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
303583 次 |
| 最近记录: |