일반 함수의 정의와 호출은 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()라는 함수를 사용하여 호출할 수 있습니다. 여기에는 콜백 함수 이름과 매개 변수 배열의 두 가지 매개 변수가 있습니다.
call_user_func_array(" 데모", 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>";
객체에서 메서드를 호출할 때는 익명 객체를 전달한 다음 함수 이름을 지정해야 합니다.
그리고 클래스에서 정적 메서드를 호출할 때는 , 클래스 이름만 지정하면 됩니다.
위의 두 가지 경우에는 변수 함수를 완전히 사용할 수 없습니다. 시스템 콜백 call_user_func_array()만 사용할 수 있습니다. 이는
class A{ function one(){ } static function two(){ }}demo(200,array(new A,"one"));demo(200,array("A","two"));를 호출하지 않고 매개 변수를 전달하는 변수 함수일 뿐입니다.
위 내용은 PHP 콜백 함수를 작성하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!