zoukankan      html  css  js  c++  java
  • PHP函数(五)-回调函数

    回调函数是指调用函数的时候将另一个函数作为参数传递到调用的函数中,而不是传递一个普通的变量作为参数

    使用回调函数是为了可以将一段自己定义的功能传到函数内部使用

    声明回调函数的方法

    变量函数声明

    <?php
    	function Calculate($num){
    		for($i=0;$i<=10;$i++){
    			if($num($i)){
    				continue;
    			}
    			echo $i."nbsp";
    		}
    	}
    	
    	function Number_1($a){
    		return $a%2 == 0; //打印不能被2整除的数
    	}
    	
    	function Number_2($b){
    		return $b >=6; //打印小于6的数
    	}
    	
    	Calculate("Number_1");
    	echo "<br>";
    	Calculate("Number_2");
    ?>
    

     执行结果

    call_user_func_array()函数

    该函数需要两个参数。

    第一个参数是要调用的函数名,第二个参数是数组类型,为参数列表。

    参数列表的参数个数要和要调用的函数的参数个数相同

    <?php
    	function Speak($a,$b){
    		echo "He can speak ".$a;
    		echo "<br>";
    		echo "She can speak ".$b;
    	}
    	
    	function Speak_Test(){
    		return call_user_func_array('Speak',array('Chinese','English'));	
    	}
    	
    	Speak_Test()
    ?>
    

     执行结果

    类静态函数和对象

    该方法回调函数也需要用到call_user_func_array()函数

    <?php
    
    	class Speaking{
    		static function Speak($a,$b){
    			echo "He can speak ".$a;
    			echo "<br>";
    			echo "She can speak ".$b;
    			echo "<br>";
    		}
    	}
    	
    	class Writting{
    		function Write($a,$b){
    			echo "He can write ".$a;
    			echo "<br>";
    			echo "She can write ".$b;
    		}
    	}
    	
    	call_user_func_array(array("Speaking","Speak"),array("Chinese","English"));
    	call_user_func_array(array(new Writting(),'Write'),array("German","Portuguese"));
    ?>
    

     类中的方法为静态,回调方法为

    call_user_func_array(array("类名","类中的静态方法"))

    类中的方法不为静态,回调方法为

    call_user_func_array(array(对象引用,"对象中方法名"))

    执行结果


    ·

  • 相关阅读:
    hdu1430 魔板(康拓展开 bfs预处理)
    网络流EdmondsKarp算法模板理解
    poj3020 建信号塔(匈牙利算法 最小覆盖边集)
    bzoj 2465 小球
    bzoj 1822 冷冻波
    bzoj 1040 骑士
    Codeforces Round #460 (Div. 2)
    bzoj 1072 排列perm
    Codeforces Round #459 (Div. 2)
    bzoj 1087 互不侵犯King
  • 原文地址:https://www.cnblogs.com/sch01ar/p/8119963.html
Copyright © 2011-2022 走看看