4 回答
![?](http://img1.sycdn.imooc.com/54584f850001c0bc02200220-100-100.jpg)
TA贡献1802条经验 获得超5个赞
==和之间的区别===
松散==相等的运算符和严格===相同的运算符之间的区别在手册中有详细解释:
比较运算符
┌──────────┬───────────┬────────────────────────── ─────────────────────────────────┐
│例子│姓名│结果│
├──────────┼───────────┼────────────────────────── ─────────────────────────────────┤
│$ a == $b│Equal│如果在类型杂耍后$ a等于$ b,则为TRUE。│
│$ a === $b│相同│如果$ a等于$ b,则为TRUE,它们属于同一类型。│
└──────────┴───────────┴────────────────────────── ─────────────────────────────────┘
==比较宽松
如果您正在使用==运算符,或者使用松散比较的任何其他比较运算符!=,<>或者==,您始终必须查看上下文,以查看某些内容转换为什么,在哪里以及为什么要了解正在发生的事情。
转换规则
类型比较表
作为参考和示例,您可以在手册中看到比较表:
松散的比较 ==
┌─────────┬───────┬───────┬───────┬───────┬─────── ┬───────┬───────┬───────┬───────┬─────────┬─────── ┬───────┐
││TRUE│FALSE│1│0│-1│“1”│“0”│“-1”│NULL│数组()│“php”│“”│
├─────────┼───────┼───────┼───────┼───────┼─────── ┼───────┼───────┼───────┼───────┼─────────┼─────── ┼───────┤
│正确│正确│错误│正确│错误│正确│正确│错误│正确│错误│错误│正确│错误│
│错误│错误│正确│错误│正确│错误│错误│正确│错误│正确│正确│错误│正确│
│1│TRUE│FALSE│TRUE│FALSE│FALSE│TRUE│FALSE│FALSE│FALSE│FALSE│FALSE│FALSE│
│0│FALSE│TRUE│FALSE│TRUE│FALSE│FALSE│TRUE│FALSE│TRUE│FALSE│TRUE│TRUE│
│-1│TRUE│FALSE│FALSE│FALSE│TRUE│FALSE│FALSE│TRUE│FALSE│FALSE│FALSE│FALSE│
│“1”│TRUE│FALSE│TRUE│FALSE│FALSE│TRUE│FALSE│FALSE│FALSE│FALSE│FALSE│FALSE│
│“0”│错误│正确│错误│正确│错误│错误│正确│错误│错误│错误│错误│错误│
│“-1”│TRUE│FALSE│FALSE│FALSE│TRUE│FALSE│FALSE│TRUE│FALSE│FALSE│FALSE│FALSE│
│NULL│FALSE│TRUE│FALSE│TRUE│FALSE│FALSE│FALSE│FALSE│TRUE│TRUE│FALSE│TRUE│
│数组()│错误│正确│错误│错误│错误│错误│错误│错误│正确│正确│错误│错误│
│“php”│TRUE│FALSE│FALSE│TRUE│FALSE│FALSE│FALSE│FALSE│FALSE│FALSE│TRUE│FALSE│
│“”│错误│正确│错误│正确│错误│错误│错误│错误│正确│错误│错误│正确│
└─────────┴───────┴───────┴───────┴───────┴─────── ┴───────┴───────┴───────┴───────┴─────────┴─────── ┴───────┘
严格===相同的比较
如果您正在使用===运算符或任何其他使用严格比较的比较运算符(如!==or)===,那么您始终可以确保类型不会神奇地改变,因为不会进行转换。因此,通过严格比较,类型和值必须相同,而不仅仅是值。
类型比较表
作为参考和示例,您可以在手册中看到比较表:
严格比较 ===
┌─────────┬───────┬───────┬───────┬───────┬─────── ┬───────┬───────┬───────┬───────┬─────────┬─────── ┬───────┐
││TRUE│FALSE│1│0│-1│“1”│“0”│“-1”│NULL│数组()│“php”│“”│
├─────────┼───────┼───────┼───────┼───────┼─────── ┼───────┼───────┼───────┼───────┼─────────┼─────── ┼───────┤
│TRUE│TRUE│FALSE│FALSE│FALSE│FALSE│FALSE│FALSE│FALSE│FALSE│FALSE│FALSE│FALSE│
│错误│错误│正确│错误│错误│错误│错误│错误│错误│错误│错误│错误│错误│
│1│FALSE│FALSE│TRUE│FALSE│FALSE│FALSE│FALSE│FALSE│FALSE│FALSE│FALSE│FALSE│
│0│FALSE│FALSE│FALSE│TRUE│FALSE│FALSE│FALSE│FALSE│FALSE│FALSE│FALSE│FALSE│
│-1│FALSE│FALSE│FALSE│FALSE│TRUE│FALSE│FALSE│FALSE│FALSE│FALSE│FALSE│FALSE│
│“1”│错误│错误│错误│错误│错误│正确│错误│错误│错误│错误│错误│错误│
│“0”│错误│错误│错误│错误│错误│错误│正确│错误│错误│错误│错误│错误│
│“-1”│错误│错误│错误│错误│错误│错误│错误│正确│错误│错误│错误│错误│
│NULL│FALSE│FALSE│FALSE│FALSE│FALSE│FALSE│FALSE│FALSE│TRUE│FALSE│FALSE│FALSE│
│数组()│错误│错误│错误│错误│错误│错误│错误│错误│错误│正确│错误│错误│
│“php”│错误│错误│错误│错误│错误│错误│错误│错误│错误│错误│正确│错误│
│“”│错误│错误│错误│错误│错误│错误│错误│错误│错误│错误│错误│正确│
└─────────┴───────┴───────┴───────┴───────┴─────── ┴───────┴───────┴───────┴───────┴─────────┴─────── ┴───────┘
![?](http://img1.sycdn.imooc.com/54584dd900014f6c02200220-100-100.jpg)
TA贡献1820条经验 获得超2个赞
如果运算符不同,则运算符==在两种不同类型之间进行转换,而===运算符执行“类型安全比较”。这意味着如果两个操作数具有相同的类型和相同的值,它将仅返回true。
例子:
1 === 1: true
1 == 1: true
1 === "1": false // 1 is an integer, "1" is a string
1 == "1": true // "1" gets casted to an integer, which is 1
"foo" === "foo": true // both operands are strings and have the same value
警告:具有等效成员的同一类的两个实例与===运算符不匹配。例:
$a = new stdClass();
$a->foo = "bar";
$b = clone $a;
var_dump($a === $b); // bool(false)
![?](http://img1.sycdn.imooc.com/545865620001c45402760276-100-100.jpg)
TA贡献1853条经验 获得超18个赞
关于JavaScript:
===运算符与==运算符的作用相同,但它要求其操作数不仅具有相同的值,而且还具有相同的数据类型。
例如,下面的示例将显示'x和y相等',但不是'x和y相同'。
var x = 4;var y = '4';if (x == y) { alert('x and y are equal');}if (x === y) { alert('x and y are identical');}
- 4 回答
- 0 关注
- 594 浏览
添加回答
举报