通常の関数の定義と呼び出しはjsと同様ですが、この定義方法は戻り値を必要とせず、戻り値があっても追加する必要はありません。宣言している。
後の PHP バージョンでは、関数が定義される前に呼び出すことができるという非常に便利な機能が追加されました。
echo add(1,2); echo "</br>"; function add($a,$b){ return $a+$b; } function sub($a,$b){ return $a-$b; } echo add(23,12); echo "</br>"; echo sub(23,22); echo "</br>";
次に紹介するのは変数関数という名前の通り、変数として使用するとても便利な関数です。
利点は、同じ変数を使用して異なる関数を呼び出すことができることです。これは関数の多態性呼び出しと非常に似ています。
$var="add"; echo $var(4,2); echo "</br>"; $var="sub"; echo $var(4,2); echo "</br>";
コールバック関数とは、単純なパラメータを渡すだけでは問題が解決できない場合に、目的を達成するために関数に処理を渡す関数です。
関数を呼び出すときに関数をパラメーターとして渡すことは、関数コールバックです。
$arr=array(2,3,5,4,1,6,7,9,8); var_dump($arr); echo "</br>";
//这里是自定义回调函数,返回-1是指将两个元素交换,0和1是不发生改变。 function myrule($a,$b){ if ($a>$b){ return 1; } elseif ($a<$b){ return -1; } else{ return 0; } } //usort就是系统函数,但是他的第二个参数是回调函数,这个函数参数就是排序规则 usort($arr,"myrule"); var_dump($arr); echo "</br>";
独自のコールバック関数を作成し、変数関数とコールバックを使用して、単純なフィルター条件を完成させます。複数の条件を同時に満たす必要がある場合は、&& 関係を指定するだけです。
使用される変数関数は、システム内の call_user_func_array() という関数を使用して呼び出すことができます。これには、コールバック関数の名前とパラメーター array の 2 つのパラメーターがあります。
call_user_func_array("demo " , array(1,3)); この利点は、デフォルトのパラメーターがある場合でも、配列内のパラメーターの数を元の関数の数よりも少なくできることです。
//rule1除去数组中是三的倍数的数 function rule1($a){ if ($a%3==0){ return true; }else{ return false; } } //rule2是除去数组中的回文数(从左边读与从右边读是一样的) function rule2($a){ if ($a==strrev($a)){ return true; }else{ return false; } } function demo($n,$var){ for ($i=0;$i<$n;$i++){ if (call_user_func_array($var,array(23))) //if ($var($i)) { continue; }else{ echo $i."<br>"; } } } $var="rule1"; demo(100,$var); echo "</br>"; echo "<hr>"; $var="rule2"; demo(200,$var); echo "</br>";
オブジェクト内のメソッドを呼び出す場合は、匿名オブジェクトを渡して関数名
を指定する必要があることに注意してください。クラス内の静的メソッドを呼び出す場合は、必要なのはクラス名を指定します。
上記 2 つのケースでは、変数関数を完全に使用することはできません。システム コールバック call_user_func_array() のみが使用できます。可変関数のみが、
class A{ function one(){ } static function two(){ }}demo(200,array(new A,"one"));demo(200,array("A","two"));を呼び出さずにパラメーターを渡します。
以上がPHPのコールバック関数の書き方の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。