filter_var_array() - 未定义的变量

时间:2014-05-23 14:43:28

标签: php arrays callback

我正在尝试使用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()有什么意义?

1 个答案:

答案 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');