이 기사의 예에서는 PHP가 클로저를 기반으로 함수의 자체 호출(재귀)을 구현하는 방법을 설명합니다. 참고를 위해 다음과 같이 공유합니다.
PHP 클로저는 일반적으로 사용되지 않을 수 있지만 일부 상황에서는 재귀와 같은 특정 기능을 구현하기 위해 PHP 클로저를 사용하는 것을 고려할 수 있습니다. PHP 클로저를 사용하여 재귀 구현
//php闭包实现函数的自调用,也就是实现递归 function closure($n,$counter,$max){ //匿名函数,这里函数的参数加&符号是,引址调用参数自己 $fn = function (&$n,&$counter,&$max=1) use(&$fn){//use参数传递的是函数闭包函数自身 $n++; if($n < $max){//递归点,也就是递归的条件 $counter .=$n.'<br />'; //递归调用自己 $fn($n,$counter,$max); } return $counter; };//记得这里必须加``;``分号,不加分号php会报错,闭包函数 /* *这里函数closure的返回值就是调用闭包的匿名函数 *而闭包函数,引用closure函数传进来的参数 */ return $fn($n,$counter,$max); } echo (closure(0,'',10));
이것은 PHP 클로저를 사용하여 재귀를 구현하는 간단한 함수입니다. 사실 이 함수를 조금만 이해하면 됩니다. 수정을 통해 Infinitus 분류와 같은 많은 기능을 얻을 수 있습니다.
내부 클로저 함수에 관해서는 사실 외부 클로저 매개변수를 참조할 필요가 없습니다. 클로저 내부에서 클로저 함수의 매개변수를 설정할 수 있습니다.
클로저 함수는 클로저 함수 내부에 있으므로 클로저 함수의 값을 반환할 필요가 없습니다. 클로저에 변수를 설정하고 이를 클로저 함수에 전달한 다음 클로저를 사용할 수 있습니다. 원하는 것을 재귀적으로 얻으려면, 원하는 것을 배열에 저장한 다음 클로저 함수를 사용하여 얻은 것을 반환합니다. 따라서 클로저 함수에도 반환 값이 없을 수 있습니다. 얻고 싶습니다.
간단히 말해서, 원하는 것을 달성하려면 이 클로저 함수를 사용하고, 필요한 것을 반환하기만 하면 됩니다. 반드시 클로저 함수의 반환 값에서 얻을 필요는 없습니다.
위 내용은 PHP 클로저 기반 구현 함수의 self-calling(recursive) 예제 분석 내용입니다. 더 많은 관련 내용은 PHP 중국어를 참고해주세요. 홈페이지(www.php.cn) !