typedef struct _zval_struct zval;
struct _zval_struct {
/* Variable information */
zvalue_value value; /* value */
zend_uint refcount__gc;
zend_uchar type; /* active type */
zend_uchar is_ref__gc;
};
这是php变量存储结构,php变量类型可以转化。
那么我想问的是两个变量相等的条件是什么? 存储的value相等就可以了嘛?
<?php
$str1 = null;
$str2 = false;
echo $str1 == $str2 ? '相等' : '不相等'; //相等
<?php
$str1 = '';
$str2 = 0;
echo $str1 == $str2 ? '相等' : '不相等'; //相等
<?php
$str1 = 0;
$str2 = '0';
echo $str1 === $str2 ? '相等' : '不相等'; //不相等
这三个 我有点混乱 ,能不能给我解释一下?谢谢各位
看源码更清晰:
全等
===比较函数很明显是先比较动态类型, 类型不一致,直接返回0.
类型一致,再比较值
普通比较
==函数代码太长,就不贴了, 按照你的例子, 操作数1是字符串, 操作数2是数字, 会把操作数1转成数字再比较.
代码片断:
普通比较

==的比较规则如下图: