1. 布尔类型的true,false是不区分大小写的
2. 当转换为布尔类型时,以下将会返回false,其它的都返回true
- the 布尔值 FALSE 自身
- the 整型值 0 (零)
- the 浮点型值 0.0 (零)
- 空 字符串, 以及 字符串 "0"
- 不包括任何元素的数组
- 不包括任何成员变量的对象(仅PHP 4.0 适用)
- 特殊类型 NULL (包括尚未设定的变量)
- 从没有任何标记(tags)的XML文档生成的SimpleXML 对象
3. “0.00”转换为布尔型时,结果为true
4. 由于可以是使用以下代码来判断一个数组是否为空,这个效率跟empty,count来比较不知道怎么样
$a = !!array(); // This will === false; (as expected)
5. 布尔类型的false转换为int时,为0;转换为string类型时为空字符"",尝试以下代码
echo false ;
echo (false) ;
echo false+false ;
6. 你猜下面的代码输出是什么. 因为当==符号比较数字与字符串的时候,然后再进行数字比较。也就是这里的'all'先转换成数字0了,所有结果是true。但是var_dump(0==='all')则结果是false,因为===符不进行类型转换,就是会判断类型是否相同。
var_dump(0 == 'all'); // take care
7. var_dump(false==0)将返回true,因为==会先把0转换为布尔类型。参考下面的比较类型
运算数 1 类型 | 运算数 1 类型 | 结果 |
---|---|---|
null 或 string | string | 将 NULL 转换为 "",进行数字或词汇比较 |
bool 或 null | 任何其它类型 | 转换为 bool,FALSE < TRUE |
object | object | 内置类可以定义自己的比较,不同类不能比较,相同类和数组同样方式比较属性(PHP 4 中),PHP 5 有其自己的说明 |
string,resource 或 number | string,resource 或 number | 将字符串和资源转换成数字,按普通数学比较 |
array | array | 具有较少成员的数组较小,如果运算数 1 中的键不存在于运算数 2 中则数组无法比较,否则挨个值比较(见下例) |
array | 任何其它类型 | array 总是更大 |
object | 任何其它类型 | object 总是更大
|