不同类型的数据比较,最好还是用全等===和不全等!==运算符.
因为比较运算符全等===和不全等!==会对类型进行检查:
$a === $b 表示:如果$a等于$b,并且它们的类型也相同时,返回true.
$a !== $b 表示:如果$a不等于$b,或者它们的类型不同时,返回true.
if(false !== 0) echo time(); //输出时间戳
if(false != 0) echo time(); //没有输出
一句话,比较时尽量用===和!==而不用==和!=.
此外,PHP还提供了一系列类型检查函数:
is_int/is_float/is_numeric/is_string/is_bool/is_null
is_array/is_object/instanceof/is_resource/is_callable
一些函数,也提供有类型检查参数,需要注意,比如:
in_array('value', $arr, true)
array_search('value', $arr, true)
array_keys($arr, 'value', true)
第三个参数的值为 true 则函数还会检查类型是否相同.
另外,PHP还支持用比较运算符==,!=,===,!==来比较两个数组或两个对象是否相等.
// 输出true,表示存在相同的键值对.
var_export( array('a' => 1, 'b' => '2D') == array('b' => 2, 'a' => 1) );
// 输出false,因为===不仅要求键值对相同,而且要求元素的【顺序】和【类型】也相同.
var_export( array('a' => 1, 'b' => 2) === array('b' => 2, 'a' => 1) );
// 输出false,因为两个数组的键值对是不同的。
var_export( array('a', 'b') == array('b', 'a') );
左边是:
array (
0 => 'a',
1 => 'b',
)
右边是:
array (
0 => 'b',
1 => 'a',
)
PHP还支持用比较运算符(==,!=,===,!==)判断两个对象是否相等:
class Foo {}
$foo1 = new Foo();
$foo2 = new Foo();
var_export($foo1 == $foo2); // true
var_export($foo1 === $foo2); // false (因为引用不同)