PHP – 在“===”中首先评估什么?类型或值相等?

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了PHP – 在“===”中首先评估什么?类型或值相等?脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
我们有一个比较运算符,它有一个运算符’===’.有人可以指导,首先评估的是什么,“类型”还是价值平等?

解决方法

@H_512_8@ 当然是类型,
通常在使用==运算符时

>它会首先检查类型,如果它们不同,它会将其中一个转换为相同,
>然后它将检查值是否等于,

因此,首先要评估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,请注明来意。