2015-04-09 10:56:49 4794次浏览 1条回答 0 悬赏 10 金钱

为什么用compareAttribute验证两个密码是否一致时,我两个密码输入是个数不同的0时,验证通过了?
array('pwd2', 'compare', 'compareAttribute' => 'password', 'message' => '两次密码必须一致'),

最佳答案

  • naivefang 发布于 2015-06-24 16:03 举报

    compare的实现:

        /**
         * Compares two values with the specified operator.
         * @param string $operator the comparison operator
         * @param string $type the type of the values being compared
         * @param mixed $value the value being compared
         * @param mixed $compareValue another value being compared
         * @return boolean whether the comparison using the specified operator is true.
         */
        protected function compareValues($operator, $type, $value, $compareValue)
        {
            if ($type === 'number') {
                $value = (float) $value;
                $compareValue = (float) $compareValue;
            } else {
                $value = (string) $value;
                $compareValue = (string) $compareValue;
            }
            switch ($operator) {
                case '==':
                    return $value == $compareValue;
                case '===':
                    return $value === $compareValue;
                case '!=':
                    return $value != $compareValue;
                case '!==':
                    return $value !== $compareValue;
                case '>':
                    return $value > $compareValue;
                case '>=':
                    return $value >= $compareValue;
                case '<':
                    return $value < $compareValue;
                case '<=':
                    return $value <= $compareValue;
                default:
                    return false;
            }
        }
    

    等于用==而非strcmp时,'00' == '000' 返回真。参考示例代码:

    if('00' == '0') {
        echo '00 == 0';
    }
    else echo '00 != 0';
    

    输出:'00 == 0'

    这个问题说明compare的type=string的时候,运算符有待商榷,给官方提一个issue。

    1 条回复
    没有找到数据。
您需要登录后才可以回答。登录 | 立即注册
陈江南
总监

陈江南

注册时间:2015-04-07
最后登录:2024-03-15
在线时长:22小时52分
  • 粉丝8
  • 金钱2951
  • 威望30
  • 积分3471

热门问题