PHP 是一种弱类型语言,即不像强类型的C/C++一般定义一个变量必须要声明其类型:

int data = 1;

PHP 中要定义变量只需要带上一个$说明其是一个变量即可:

$data = 1;

正因为如此,也造成了弱类型语言的一些麻烦之处,这些尤其表现在if逻辑判断地方因为弱类型以及类型比较的理解不足造成了代码逻辑编写缺陷。

PHP官网文档中就因此给我们提供了类型比较速查表,这篇文章将其摘录整理下来:

使用函数进行类型比较

使用PHP的内置函数对类型进行比较操作

php-types-comparisons-1

  • empty() 检查一个变量是否为空,变量不存在或值为FALSE则被认定为空
  • is_null() 检测变量是否为 NULL
  • isset() 检测变量是否已设置并且非 NULL
  • empty()返回的值与其转化为boolean类型表现的值相反
  • is_null()返回的值与isset()返回的值相反

松散比较

使用==进行比较操作

php-types-comparisons-2

松散比较要尤其注意数值的0,1,-1,字符串的"0","1","-1",NULL,空数组,空字符串这些比较的意义。

严格比较

使用===进行比较操作

php-types-comparisons-3

严格比较最容易理解,不允许类型转换,只有当类型与值完全一样是才返回true