脚本宝典收集整理的这篇文章主要介绍了PHP – 在“===”中首先评估什么?类型或值相等?,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
>它会首先检查类型,如果它们不同,它会将其中一个转换为相同,
>然后它将检查值是否等于,
因此,首先要评估TyPE.
编辑
参考artragis答案
下面是is_identical_function PHP 5.4.8的完整源代码(感谢artragis)
ZEND_API int is_identical_function(zval *result,zval *op1,zval *op2 TSRMLS_DC) /* {{{ */ { Z_TYPE_P(result) = IS_BOOL; if (Z_TYPE_P(op1) != Z_TYPE_P(op2)) { Z_LVAL_P(result) = 0; return SUCCESS; } swITch (Z_TYPE_P(op1)) { // here it will check the Type and below it will check the value case IS_NULL: Z_LVAL_P(result) = 1; break; case IS_BOOL: case IS_LONG: case IS_RESOURCE: Z_LVAL_P(result) = (Z_LVAL_P(op1) == Z_LVAL_P(op2)); break; case IS_DOubLE: Z_LVAL_P(result) = (Z_DVAL_P(op1) == Z_DVAL_P(op2)); break; case IS_STRING: Z_LVAL_P(result) = ((Z_strlen_P(op1) == Z_STRLEN_P(op2)) && (!memcmp(Z_STRVAL_P(op1),Z_STRVAL_P(op2),Z_STRLEN_P(op1)))); break; case IS_ARRAY: Z_LVAL_P(result) = (Z_ARRVAL_P(op1) == Z_ARRVAL_P(op2) || zend_hash_compare(Z_ARRVAL_P(op1),Z_ARRVAL_P(op2),(compare_func_t) hash_zval_identical_function,1 TSRMLS_CC)==0); break; case IS_OBJECT: if (Z_OBJ_HT_P(op1) == Z_OBJ_HT_P(op2)) { Z_LVAL_P(result) = (Z_OBJ_HANDLE_P(op1) == Z_OBJ_HANDLE_P(op2)); } else { Z_LVAL_P(result) = 0; } break; default: Z_LVAL_P(result) = 0; return FaiLURE; } return SUCCESS; }
以上是脚本宝典为你收集整理的PHP – 在“===”中首先评估什么?类型或值相等?全部内容,希望文章能够帮你解决PHP – 在“===”中首先评估什么?类型或值相等?所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。