PHP中0和false的区别

今天发现自己弄的那个网址缩短的服务有缺陷,只要长网址没有加上 http:// 就无法成功跳转到目标网址,打算使用strpos()查找 http:// ,如果没有找到,则在网址最前面加上 http:// 。结果在测试的时候,发现不管有没有找到 http:// ,最后都被加上了http://。后来才明白,我是用if(!strpos($url,”http://”))来判断是否存在http://的,如果存在,则这个if不成立,如果不存在,则成立,问题是,当strpos查找到目标字符串时,返回的是目标字符串首次出现的位置,也就是说,即使查到了http://,返回的也是这个字符串开始的位置,也就是0,没有查到,返回的是boolean的false,在php中,两者都表示false,也就是说,不管有没有找到,if都会满足条件而执行,结果是最后都会被加上http://,不管网址中有没有http://。解决的办法很简单,用===全等于这个判断符号,这样,false===0就不会成立了,因为这两个是不同的类型。

发表评论

邮箱地址不会被公开。

This site uses Akismet to reduce spam. Learn how your comment data is processed.