为什么呢?因为这个较量是弱范例。两个较量时,PHP会先实验鉴别阁下两者是否为数字。而问题就在于什么样的字符串是数字,是纯真的数字串吗?远远不但于此,还包罗 0x 开头的十六进制,XXeX范例的科学记数法 等等,如 '12e0'=='0x0C' 获得的是true。而在数值范例与字符串较量时,甚至一些数字开头的非数值串,好比 12=='12这个串' 获得的值也会是 true。
所以这些环境下,大概会使原来并不沟通的字符串被鉴定为相等。而利用===较量则为包括范例的较量,不会有任何转换,所以是可以精确较量字符串是否沟通的。
别的吐槽一下JAVA,==居然较量不了字符串是否相等,因为字符串是一个工具,==酿成了判定是否为同一个工具……
不能把switch中的case看成if来利用在PHP函数switch……case中,switch 匹配的是case语句的值,而不能把case当if用。同时,switch表达式优先匹配与其值范例一致的case语句,范例纷歧致的放在后头处理惩罚
strrchr函数是查找某个字符,而不是查找字符串在PHP手册上strrchr() 函数的表明是查找字符串在另一个字符串中最后一次呈现的位置,并返回从该位置到字符串末了的所有字符。假如成失败,不然返回 false。实际上,这个函数是查找某个字符,而不是查找字符串。如下示例,许多人一开始必定觉得返回false,但实际上并不是。
上面示例说明,假如$b是字符串,只利用第一个字符,后头的其它字符会忽略。