$num = 0; if($num == 'hello'){ echo $num; // echo 0 }
回复内容:
$num = 0; if($num == 'hello'){ echo $num; // echo 0 }
看看官网: PHP 类型比较表
具体原因,也有说明
更新 2015-12-10 09:54:28
看了你的评论,我觉得有必要再更新一下。
你犯了一个错误,我把它称为想当然的知识迁移。看看我之前写的《代码之谜》系列。
字符串=true
0 = false
你的思路是这样的:
<code>因为: 字符串=true (前提) 因为:0 = false (前提) 又因为: true != false (真理) 所以: 字符串 != 0 (有依据吗??) [1] 因为: 'hello' 是字符串 (前提) 因为: $num = 0 (前提) 所以: 'hello' != $num</code>
有依据吗?好像有。
如果 A=B,B=C,那么 A=C。
这就是我们经常使用的传递性,
同理:如果 A=B,B!=C,那么 A!=C。
好像并没有什么错误。这就是我为什么把它称为想当然的知识迁移。PHP 手册中,从来没有说过比较运算符合传递性,没有,从来没有。
不仅仅是 PHP,任何语言都是,当你看到 A=B 并且 B=C 时,不要想当然的认为 A=C。
----------- 继续更 2015-12-10 10:08:30 ---------------
题外话。
说说其它的几个特性。
在 javascript 中,甚至有不满足同一性的代码。什么是同一性,就是说:
<code>如果 A,那么 A=A</code>
那 PHP 呢,还是继续看那张图:
我们看对角线。哇,都是 TRUE
,谢天谢地。
还有一个交换律:
<code>如果 A=B,那么 B=A</code>
自己对照着表看吧。
用 ==
比较数字和字符串时会将字符串转为数字再比较,PHP 转换字符串的规则是从字符串开头尝试转换为合适数字,例如 "123hello"
会转换为 123
,而当字符串开头不是数字格式时则会转换为 0
。
php是弱类型语言,当一个数字与一个字符串比较时,会把字符串转换成数字,然后再进行比较,因此0与hello进行比较,他实际上在比较之前先将hello强制转换成数字,而转完恰好是0,因此这两个用==比较符是相等的,如果要严格比较,可以使用===运算符
具体参考:
PHP 类型比较
PHP ==
类型不一样的话,会转换成同一类型,这个写后面的字符串会转换成数值,参考
http://php.net/manual/en/language.operators.comparison.php
'hello' 由于前几个字符不包含数字,所以转换之后为 0,参考
http://php.net/manual/en/language.types.string.php#language.types.string.conversion
这个不是你认为的数据都变为boolean

php把负数转为正整数的方法:1、使用abs()函数将负数转为正数,使用intval()函数对正数取整,转为正整数,语法“intval(abs($number))”;2、利用“~”位运算符将负数取反加一,语法“~$number + 1”。

实现方法:1、使用“sleep(延迟秒数)”语句,可延迟执行函数若干秒;2、使用“time_nanosleep(延迟秒数,延迟纳秒数)”语句,可延迟执行函数若干秒和纳秒;3、使用“time_sleep_until(time()+7)”语句。

php除以100保留两位小数的方法:1、利用“/”运算符进行除法运算,语法“数值 / 100”;2、使用“number_format(除法结果, 2)”或“sprintf("%.2f",除法结果)”语句进行四舍五入的处理值,并保留两位小数。

判断方法:1、使用“strtotime("年-月-日")”语句将给定的年月日转换为时间戳格式;2、用“date("z",时间戳)+1”语句计算指定时间戳是一年的第几天。date()返回的天数是从0开始计算的,因此真实天数需要在此基础上加1。

php判断有没有小数点的方法:1、使用“strpos(数字字符串,'.')”语法,如果返回小数点在字符串中第一次出现的位置,则有小数点;2、使用“strrpos(数字字符串,'.')”语句,如果返回小数点在字符串中最后一次出现的位置,则有。

php字符串有下标。在PHP中,下标不仅可以应用于数组和对象,还可应用于字符串,利用字符串的下标和中括号“[]”可以访问指定索引位置的字符,并对该字符进行读写,语法“字符串名[下标值]”;字符串的下标值(索引值)只能是整数类型,起始值为0。

方法:1、用“str_replace(" ","其他字符",$str)”语句,可将nbsp符替换为其他字符;2、用“preg_replace("/(\s|\ \;||\xc2\xa0)/","其他字符",$str)”语句。

在php中,可以使用substr()函数来读取字符串后几个字符,只需要将该函数的第二个参数设置为负值,第三个参数省略即可;语法为“substr(字符串,-n)”,表示读取从字符串结尾处向前数第n个字符开始,直到字符串结尾的全部字符。


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

Zend Studio 13.0.1
Powerful PHP integrated development environment

Atom editor mac version download
The most popular open source editor

ZendStudio 13.5.1 Mac
Powerful PHP integrated development environment

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Dreamweaver Mac version
Visual web development tools
