本文主要和大家分享PHP之回呼函數類型傳遞方式,我們這裡通過array_map()函數來進行測試,希望能協助到大家。
方式1、全域函數
function foo($val){return intval($val)+1;}$arr = array('a',2,'b',5,'c',7);//回呼函數傳遞方式$res = array_map('foo', $arr);/**輸出如下:array (size=6) 0 => int 1 1 => int 3 2 => int 1 3 => int 6 4 => int 1 5 => int 8*/
方式2、類公有函數
class Demo {public function foo($val){return intval($val)+1;}}$arr = array('a',2,'b',5,'c',7);//回呼函數傳遞方式$res = array_map(array(new Demo, 'foo'), $arr);
方式3、類私人函數
class Demo {private function foo($val){return intval($val)+1;}public function test(){$arr = array('a',2,'b',5,'c',7); //回呼函數傳遞方式$res = array_map(array($this, 'foo'), $arr);return $res;}}$demo = new Demo;$result = $demo->test();
方式4、類公有靜態方法
class Demo { static public function foo($val){ return intval($val)+1; } } $arr = array('a',2,'b',5,'c',7); //回呼函數傳遞方式 以下兩種方式都可以$res = array_map('Demo::foo', $arr); //$res = array_map(array('Demo', 'foo'), $arr);
方式5、類私人靜態方法
class Demo {static private function foo($val){return intval($val)+1;}static public function test(){$arr = array('a',2,'b',5,'c',7); //回呼函數傳遞方式 這裡可以使用兩種傳遞方式$res = array_map(array('self', 'foo'), $arr);//$res = array_map('self::foo', $arr);//$res = array_map(array('Demo', 'foo'), $arr);//$res = array_map('Demo::foo', $arr);return $res;}}$result = Demo::test();
方式6、匿名函數
$foo = function($val){return intval($val)+1;};$arr = array('a',2,'b',5,'c',7);//回呼函數傳遞方式$res = array_map($foo, $arr);