我正在尝试使用filter_var_array()
和FILTER_CALLBACK
格式化某些数字,我认为这样可行,但事实并非如此:
$item_arr = filter_var_array($item_arr, array(
'item_number' => array(
'filter' => FILTER_CALLBACK,
'options' => array($this, 'number_format')
)
) );
虽然这确实有效:
$item_arr = filter_var_array($item_arr, array(
'item_number' => array(
'filter' => FILTER_CALLBACK,
'options' => function( $num ){
return number_format( $num );
}
)
) );
这两者有什么区别?为选项分配array()
有什么意义?
答案 0 :(得分:2)
在第一个示例中,您尝试为$this->number_format
创建回调,但我想您想要全局函数number_format
。如果你传递一个函数(与对象方法不同)作为回调函数,那么函数名作为字符串应该被传递,如下所示:
$item_arr = filter_var_array($item_arr, array(
'item_number' => array(
'filter' => FILTER_CALLBACK,
'options' => 'number_format'
)
));
查看有关callbacks
的文档页面以获取更多信息。
如果要格式化数字数组,函数array_walk()
似乎更合适:
array_walk($item_arr, 'number_format');