这是我的示例代码:
$issue_id = $_POST['issue_id'];
if(!empty($issue_id)){
echo 'true';
}
else{
echo 'false';
}
Run Code Online (Sandbox Code Playgroud)
如果我通过0 to $_POST['issue_id']
表单提交,那么它会回显错误。我想要的是:如果满足以下条件,条件将为真:1. 当我传递任何具有 0 的值时为真。2. 当我不传递任何值时为假。即: $_POST['issue_id']
未定义。
我也试过这个:
if(!isset($issue_id)){
echo 'true';
}
else{
echo 'false';
}
if(!empty($issue_id) || $issue==0){
echo 'true';
}
else{
echo 'false';
}
Run Code Online (Sandbox Code Playgroud)
最后一个没问题,这意味着如果我传递任何为零的值,那么它会回显 true。但如果我不传递任何值,它也会回显 true。任何的想法?
最后一个没问题,这意味着如果我传递任何具有零的值,那么它会回显真。但如果我不传递任何值,它也会回显真。任何的想法?
if (isset($_POST["issue_id"]) && $_POST["issue_id"] !== "") {
}
Run Code Online (Sandbox Code Playgroud)
请注意我!==
没有使用!=
。这就是为什么:
0 == "" // true
0 === "" // false
Run Code Online (Sandbox Code Playgroud)
在http://php.net/manual/en/language.operators.comparison.php查看更多
此外,如果您期待数字,您可以使用
if (isset($_POST["issue_id"]) && is_numeric($_POST["issue_id"])) {
}
Run Code Online (Sandbox Code Playgroud)
因为is_numeric("")
返回假
http://php.net/manual/en/function.is-numeric.php
或者,如果您希望数字不错的选择是 filter_var
if (isset($_POST["issue_id"]) {
$issue_id = filter_var($_POST["issue_id"], FILTER_VALIDATE_INT);
if ($issue_id !== false) {
}
}
Run Code Online (Sandbox Code Playgroud)
因为filter_var("", FILTER_VALIDATE_INT)
将返回假filter_var("0", FILTER_VALIDATE_INT)
并将返回(int) 0
http://php.net/manual/en/function.filter-var.php