Php 如何检测“何时”;0“;是否作为表单/$\u后置值提供?
我试图确定是否传递了一个值,但该值可以是Php 如何检测“何时”;0“;是否作为表单/$\u后置值提供?,php,forms,post,isset,Php,Forms,Post,Isset,我试图确定是否传递了一个值,但该值可以是0 isset始终返回true,empty返回false,因为值为0 我怎样才能避开这个问题呢?试试看 bool array_key_exists ( mixed $key , array $array ) 像 更多详细信息请参见。$\u POST数组的值都是字符串。使用==运算符: if ($_POST['key'] === '0') { // do things } 所有post值都是字符串,因此请考虑: isset($a[i]) &
0
isset
始终返回true,empty
返回false,因为值为0
我怎样才能避开这个问题呢?试试看
bool array_key_exists ( mixed $key , array $array )
像
更多详细信息请参见。
$\u POST
数组的值都是字符串。使用==
运算符:
if ($_POST['key'] === '0') {
// do things
}
所有post值都是字符串,因此请考虑:
isset($a[i]) && strlen($a[i])
当且仅当提供值(除“空字符串”)时,该值才为真。与empty
不同,它还将检测“0”何时作为值传递。与建议的解决方案不同,当提供“”时,它将不为真:因此,它真正检测传递值的时间
另外,$\u POST键的
array\u key\u存在
和isset
的工作原理相同,因为没有空值;可以说,关键检查是针对非空字符串的检查。一旦确定某个值存在(根据上述/所需规则),就可以对其进行适当的处理-例如,if($a[i]>0)
或if($a[i]==0)
简单地检查该值是否为空:
if (isset($_POST['key']) && $_POST['key'] !== '')) {
//'key' is set and not empty
}
试试这个
如果(isset($\u POST['name'])和&$\u POST['name']!=0)){
/你的代码/
}
我被你要找的东西弄糊涂了。零是一个值。您正在寻找任何非空值吗?这就是
!空的
不起作用。您的有效输入范围是多少?因此您要么得到true(isset
),要么得到false(empty
)。选择一个,在处理布尔人的问题时没有“半真半假”。也许如果($var>=0){}@Ben,Alex会在下面给出我所需要的答案。谢谢。和empty返回false,因为值为0
,这是不需要的。对于0,Empty应该返回true。它可能是非“0”值。这与我所做的不完全相同,但它提示我使用Input::has('name')
,因为我使用了Laravel。谢谢
if (isset($_POST['key']) && $_POST['key'] !== '')) {
//'key' is set and not empty
}