如何使用php将零值视为真?

Abd*_*yan 3 php is-empty

这是我的示例代码:

$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。任何的想法?

Pet*_*ter 6

最后一个没问题,这意味着如果我传递任何具有零的值,那么它会回显真。但如果我不传递任何值,它也会回显真。任何的想法?

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