PHP分不清它们,真相居然是这样!

第一次写UC体标题。

PHPer大多是自学,于是很多人会忽视一些基础知识,比如即将谈到的字符串的比较。

PHP是弱类型语言,不同类型的值可以用==运算符进行比较,既然是不同类型,那么要一起比较就就肯定会有转换类型的逻辑,这里就隐藏了一个大坑 --- 字符串和数字的比较运算

我们来看例子:

那么这段代码的运行结果是:

bool(true)
bool(true)
PHP分不清它们,真相居然是这样!_第1张图片
好害怕

不要惊慌。

PHP官方文档其实已经详细说明了这种比较计算的逻辑了:

如果比较一个数字和字符串或者比较涉及到数字内容的字符串,则字符串会被转换为数值并且比较按照数值来进行。此规则也适用于 switch 语句。当用 === 或 !== 进行比较时则不进行类型转换,因为此时类型和数值都要比对。

--- PHP手册 > 语言参考 > 比较运算符

那么以后看到这种也不要怪产品设计了:

你可能感兴趣的:(PHP分不清它们,真相居然是这样!)