2014-05-23 84 views
0

我試圖使用filter_var_array()FILTER_CALLBACK格式化一些數字,我認爲這會工作,但不會:filter_var_array() - 未定義的變量

$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()有什麼意義?

回答

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