4

我有一个简单的问题,但我没有找到答案,那就是

我如何使用内置的 Zend Validator 来测试浮点数/双精度数是否大于或等于一分钟?

我已经搜索了一个符合我要求的答案,并且我在 Zend Framework 中发现了这个问题 GreaterOrEqual 验证器,但我的有点不同。此外,我知道我可以创建自己的验证器或复制网络上的验证器之一,例如大于或等于验证器,但我想知道如何使用内置验证器进行验证。

这是一个示例,可以让您更好地理解。

如果我有一个整数,我可以通过这种方式实现这个目标:

$Validators = array(new Zend_Validate_Int(), new Zend_Validate_GreaterThan($min - 1));
// Validate the number

相反,如果我有一个浮点数,我就无法做到这一点,而且正如许多程序员所知道的那样,由于舍入问题,尝试用浮点数做脏事会产生很多问题(每个计算机科学家应该知道的事情)浮点算术)。

谢谢大家

4

3 回答 3

2

这不完全是您要求的,但我认为这是最简单的:关键是“包容性”。

    $number->addValidator('Float');
    $number->addValidator('Between', false,array('min' => '5,5', 'max' => $greatest_number+1, 'inclusive' => true));

这里你有所有的验证器:

Zend_Validate_Abstract 类参考

所以你的问题的答案是“不”,浮点数没有大于或等于验证器。

于 2011-10-18T07:25:12.083 回答
2

在我尝试了很多方法之后,我得出结论,实际上(Zend Framework 1.11 版)使用内置验证器(如 Phil 所建议的)进行这种验证是不可能的。

我真的希望他们会在下一个版本中添加这个验证器。

于 2011-10-20T00:22:36.920 回答
-1

怎么用

new Zend_Validate_Callback( function ($value) { if ($value >= 1) { return true; } return false; });

于 2013-08-29T14:43:51.227 回答