小编Des*_*ova的帖子

用PHP截断浮点数

当浮点数需要在浮点之后被截断为某个数字时,事实证明它不容易完成.例如,如果必须在点之后对第二个数字进行截断,则数字应该是
45.8976 => 45.89,0.0185 => 0.01
(点之后的第二个数字不是根据点之后的第三个数字舍入).
round(),number_format(),sprintf()等函数围绕数字并打印出
45.8976 => 45.90,0.0185 => 0.02

我遇到了两个解决方案,我想知道它们是否足够好以及哪个更好用

45.8976 => 45.89, 0.0185 => 0.01
Run Code Online (Sandbox Code Playgroud)

php floating-point truncate floating-accuracy

11
推荐指数
4
解决办法
4万
查看次数

Zend Framework:为部分多重复选框元素选项设置默认值是不可能的

我正在写这个问题因为我在设置Zend Framework 1.9.3的_MultiCheckbox元素的默认值时遇到了困难.我用这样的多个选项创建Zend_Form_Element_MultiCheckbox:

$multiCheckbox = new Zend_Form_Element_MultiCheckbox( 'elId',
array ( 'disableLoadDefaultDecorators' =>true ) );

$multiCheckbox ->setName( 'elId' )
->setLabel('elId')
->setRequired( false )
->setAttrib('class', 'inputtext')
->setDecorators( array( 'ViewHelper' ) )
->setMultiOptions( $options );
Run Code Online (Sandbox Code Playgroud)

其中$ options数组是一个关联数组'key'=>'value'.该字段显示得很好,我可以获得该元素的所有选中值.

当返回到该页面时,我需要再次从DB恢复整个选项列表并标记选中的选项.我试过这样做:

$multiCheckbox ->setValue( $defaults );
Run Code Online (Sandbox Code Playgroud)

其中$ default是数组,包含'checked_option_field_id'=> true类型的元素
(例如,array('1222'=> true,'1443'=> true)).
该操作检查所有复选框,而不仅仅是我需要的,我已经传递给setValue()方法.我试图只传递一个包含'checked_option_field_id'类型元素的数组,
(例如数组('1222','1443')),
但这也不起作用 - 检查没有复选框.我已经使用形式setDefaults()方法和这两种数组,但结果是相同的 - 因为这个方法再次使用setValue()为每个元素.

MultiCheckbox元素就是这样呈现的(尝试仅为一个选项设置选中的值时的结果):

<label for="elId-1222"><input type="checkbox" name="elId[]" id="elId-1222" value="1222" checked="checked" class="inputtext">BoRoom </label><br />

<label for="elId-1443"><input type="checkbox" name="elId[]" id="elId-1443" value="1443" checked="checked" class="inputtext">BoRoom Eng2 </label><br/>

该元素填充elId []数组中的checked选项值.这是元素名称.setDefaults()form方法按名称获取所有表单元素,并通过调用setDefault()form方法并在setValue()元素方法之后提交其默认值.所以我的multicheckbox元素名称为elId(它不会逐个获取所有元素选项)并为所有选项设置默认值,而不是仅为数组中给定的值.

这就是我看到的方式,我找不到解决方案如何仅为多个盒子元素的某些选项设置默认值.

zend-framework

4
推荐指数
1
解决办法
2万
查看次数