如何使用 php 将零值视为真值?
How to treat zero values as true using php?
这是我的示例代码:
$issue_id = $_POST['issue_id'];
if(!empty($issue_id)){
echo 'true';
}
else{
echo 'false';
}
如果我通过表单提交通过 0 to $_POST['issue_id']
,那么它会返回 false。我想要的是:如果满足以下条件,条件将为真:
1. 当我传递任何具有 0 的值时为真。
2. false 当我不传递任何值时。即:$_POST['issue_id']
未定义。
我也试过这个:
if(!isset($issue_id)){
echo 'true';
}
else{
echo 'false';
}
if(!empty($issue_id) || $issue==0){
echo 'true';
}
else{
echo 'false';
}
最后一个没问题,这意味着如果我传递任何具有零的值,那么它将回显为真。但如果我不传递任何值,它也会回显 true。任何的想法?
当您从表单获取数据时,请记住:
- 所有文本框,无论是
input
还是 textarea
都将作为 字符串 出现。这包括空文本框和包含数字的文本框。
- 所有选中的按钮都有一个值,但未选中的按钮将根本不存在。这包括单选按钮、复选框和实际按钮。
这意味着 $_POST['issue_id']
将是字符串 '0'
,这实际上是真实的。
如果你需要它是一个整数,使用像这样的东西:$issue_id=intval($_POST['issue_id'])
;
if(isset($_POST['issue_id'])) {
if($_POST['issue_id'] == 0) {
echo "true";
}
else {
echo "false";
}
}
The last is okay, meaning if I pass any value having ZERO then it echo true. But it also echo true if I don't pass any value. Any idea?
if (isset($_POST["issue_id"]) && $_POST["issue_id"] !== "") {
}
请注意我使用的是 !==
而不是 !=
。这就是为什么:
0 == "" // true
0 === "" // false
在 http://php.net/manual/en/language.operators.comparison.php
查看更多
另外,如果您需要数字,您可以使用
if (isset($_POST["issue_id"]) && is_numeric($_POST["issue_id"])) {
}
因为 is_numeric("")
returns false
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) {
}
}
因为 filter_var("", FILTER_VALIDATE_INT)
将 return 为假,而 filter_var("0", FILTER_VALIDATE_INT)
将 return (int) 0
@Abdus Sattar Bhuiyan 你也可以像下面一样填写你的两个条件:
<?php
$_POST["issue_id"] = "0";
$issue_id = isset($_POST['issue_id']) ? (!empty($_POST['issue_id']) || $_POST['issue_id'] === 0 || $_POST['issue_id'] === "0") ? true : false : false;
if($issue_id){
echo 'true';
}
else{
echo 'false';
}
这是我的示例代码:
$issue_id = $_POST['issue_id'];
if(!empty($issue_id)){
echo 'true';
}
else{
echo 'false';
}
如果我通过表单提交通过 0 to $_POST['issue_id']
,那么它会返回 false。我想要的是:如果满足以下条件,条件将为真:
1. 当我传递任何具有 0 的值时为真。
2. false 当我不传递任何值时。即:$_POST['issue_id']
未定义。
我也试过这个:
if(!isset($issue_id)){
echo 'true';
}
else{
echo 'false';
}
if(!empty($issue_id) || $issue==0){
echo 'true';
}
else{
echo 'false';
}
最后一个没问题,这意味着如果我传递任何具有零的值,那么它将回显为真。但如果我不传递任何值,它也会回显 true。任何的想法?
当您从表单获取数据时,请记住:
- 所有文本框,无论是
input
还是textarea
都将作为 字符串 出现。这包括空文本框和包含数字的文本框。 - 所有选中的按钮都有一个值,但未选中的按钮将根本不存在。这包括单选按钮、复选框和实际按钮。
这意味着 $_POST['issue_id']
将是字符串 '0'
,这实际上是真实的。
如果你需要它是一个整数,使用像这样的东西:$issue_id=intval($_POST['issue_id'])
;
if(isset($_POST['issue_id'])) {
if($_POST['issue_id'] == 0) {
echo "true";
}
else {
echo "false";
}
}
The last is okay, meaning if I pass any value having ZERO then it echo true. But it also echo true if I don't pass any value. Any idea?
if (isset($_POST["issue_id"]) && $_POST["issue_id"] !== "") {
}
请注意我使用的是 !==
而不是 !=
。这就是为什么:
0 == "" // true
0 === "" // false
在 http://php.net/manual/en/language.operators.comparison.php
查看更多另外,如果您需要数字,您可以使用
if (isset($_POST["issue_id"]) && is_numeric($_POST["issue_id"])) {
}
因为 is_numeric("")
returns false
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) {
}
}
因为 filter_var("", FILTER_VALIDATE_INT)
将 return 为假,而 filter_var("0", FILTER_VALIDATE_INT)
将 return (int) 0
@Abdus Sattar Bhuiyan 你也可以像下面一样填写你的两个条件:
<?php
$_POST["issue_id"] = "0";
$issue_id = isset($_POST['issue_id']) ? (!empty($_POST['issue_id']) || $_POST['issue_id'] === 0 || $_POST['issue_id'] === "0") ? true : false : false;
if($issue_id){
echo 'true';
}
else{
echo 'false';
}