compareAttribute [ 1.1 版本 ]
为什么用compareAttribute验证两个密码是否一致时,我两个密码输入是个数不同的0时,验证通过了?
array('pwd2', 'compare', 'compareAttribute' => 'password', 'message' => '两次密码必须一致'),
最佳答案
-
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 条回复
其他 0 个回答
没有找到数据。
陈江南
注册时间:2015-04-07
最后登录:2024-03-15
在线时长:22小时52分
最后登录:2024-03-15
在线时长:22小时52分
- 粉丝8
- 金钱2951
- 威望30
- 积分3471