我正在检查两个值是否为null 。 如果两者都为null我想返回false ,如果其中一个或两个都不为 null ,则我想返回true 。 我当前的代码仅在两个都不为null时才返回true ,但我希望在其中一个都不为null时返回true 。 ...
提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供 中文繁体 英文版本 中英对照 版本,有任何建议请联系yoyou2525@163.com。
如果要同时设置多个值,我要检查。 我从isset文档中读到, If multiple parameters are supplied then isset() will return TRUE only if all of the parameters are set. Evaluation goes from left to right and stops as soon as an unset variable is encountered.
If multiple parameters are supplied then isset() will return TRUE only if all of the parameters are set. Evaluation goes from left to right and stops as soon as an unset variable is encountered.
那么,为什么我的代码总是打印输出的值而从不打印“否”?
的PHP
if ( isset( $_POST['thread'],
$_POST['winkey'],
$_POST['dkey'],
$_POST['winrew'],
$_POST['drew'] )===true ) {
echo $_POST['thread'];
echo $_POST['winkey'];
echo $_POST['dkey'];
echo $_POST['winrew'];
echo $_POST['drew'];
}
else echo 'no';
的HTML
<form action="class.php" method="POST">
thread link:<br>
<input type="text" name="thread" >
<br>
win key:<br>
<input type="text" name="winkey" >
<br>
double key:<br>
<input type="text" name="dkey" >
<br>
winrew:<br>
<input type="text" name="winrew" >
<br>
double rew:<br>
<input type="text" name="drew" >
<br>
<input type="checkbox" name="banlist" value="ban">Include banlist<br>
<br>
<input type="submit" value="Submit">
</form>
提交表单后,您提到的$_POST
中的所有变量都将被设置。 如果未发出POST
请求,则不会设置任何请求。
我认为您正在寻找empty()
来测试是否有任何变量为空。
可能是因为您在POST表单时设置了值,即使您没有在输入字段中输入任何内容也是如此。 对于这些键,您将获得一个空字符串(对于isset()
返回TRUE)。
您可能应该使用!empty()
进行检查。
更好的方法可能是使用filter_input_array()
。 看起来可能像这样。
//define callback function to be used to check if value is empty
function empty_filter($var) {
if(!empty($var)) return $var;
}
$filter_definitions = array(
'thread' => array('filter' => FILTER_CALLBACK,
'options' => 'empty_filter',
'error_message' => 'This field cannot be empty.'), // filter_var_array will ignore this, but you can specify messaging here.
'winkey' => array('filter' => FILTER_CALLBACK,
'options' => 'empty_filter',
'error_message' => 'This field cannot be empty.'),
'dkey' => array('filter' => FILTER_CALLBACK,
'options' => 'empty_filter',
'error_message' => 'This field cannot be empty.'),
'winrew' => array('filter' => FILTER_CALLBACK,
'options' => 'empty_filter',
'error_message' => 'This field cannot be empty.'),
'drew' => array('filter' => FILTER_CALLBACK,
'options' => 'empty_filter',
'error_message' => 'This field cannot be empty.')
);
$filtered_post = filter_input_array(INPUT_POST, $filter_definitions, true);
// items not passing filter will show as NULL, so we check for NULL
if(in_array(NULL, $filtered_post)) {
// you can walk through the filtered array an echo out error messages
foreach($filtered_post as $key => $value) {
if(is_null($value)) {
echo $key . ': ' . $filter_definitions[$key]['error_message'] . '<br>';
}
}
} else {
// validation passed
// do whatever comes next
}
请注意,您可以为输入数组中的每个键定义不同的过滤条件,例如,您要验证一个字段为电子邮件地址,一个字段为IP地址,一个字段为正则表达式,甚至您自己的自定义验证,您可以指定验证条件,然后一次完成所有操作。
当您提交表单时,操作页面上的值不见了。 这意味着从输入中获取的东西可能是空字符串,但是您可以考虑这个空字符串,例如数字为零,它没有值但有数字。 在您的情况下,值也会在操作页面上显示,这就是每次打印值时的原因。
您可以在不提交表单时通过在新标签中打开操作页面来进行检查。 没有打印出来,这意味着平均值不会在操作页面上显示。 您的代码应如下所示。
if ( isset( $_POST['thread'],
$_POST['winkey'],
$_POST['dkey'],
$_POST['winrew'],
$_POST['drew'] )===true ) {
if ($_POST['thread'] == "" and $_POST['winkey'] == "" and $_POST['dkey'] == "" and $_POST['winrew'] == "" and $_POST['drew'] == ""){
echo "no";
}
else{
echo $_POST['thread'];
echo $_POST['winkey'];
echo $_POST['dkey'];
echo $_POST['winrew'];
echo $_POST['drew'];
}
}
else echo 'no';
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.