isset中的意外PHP行为和空

时间:2010-02-17 09:09:23

标签: php

array(4) { ["id"]=>  int(0) ["pass"]=>  string(0) "" ["log_in"]=>  string(3) "no"  } 

使用idisset中的问题返回true,因为它是0。当使用空时我认为它也是这样做的。知道它是否已设定的最佳功能是什么?

5 个答案:

答案 0 :(得分:5)

empty为这些返回false:

  • ""(空字符串)
  • 0(0为整数)
  • "0"(0为字符串)
  • NULL
  • FALSE
  • array()(空数组)
  • var $var(声明的变量,但类中没有值)

您需要使用isset来检查它是否存在。

有关详细信息,请参阅empty vs isset上的这篇文章。

答案 1 :(得分:2)

if($array['id'] === 0) {
  true
} ?

答案 2 :(得分:1)

答案 3 :(得分:1)

一个简单的if条件会为你做什么

if(id)
{
}

尝试它是否有效。

答案 4 :(得分:1)

如果id是数据库id,则为正整数

所以if($id>0)是一个简单的解决方案

OR

preg_match('#^[0-9]*$#', $id)

另一个