>  기사  >  백엔드 개발  >  클로저 구현 기능을 기반으로 한 PHP 자체 호출(재귀) 예제 분석

클로저 구현 기능을 기반으로 한 PHP 자체 호출(재귀) 예제 분석

黄舟
黄舟원래의
2017-02-24 09:21:461403검색

이 기사의 예에서는 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.&#39;<br />&#39;;
      //递归调用自己
      $fn($n,$counter,$max);
    }
    return $counter;
  };//记得这里必须加``;``分号,不加分号php会报错,闭包函数
  /*
  *这里函数closure的返回值就是调用闭包的匿名函数
  *而闭包函数,引用closure函数传进来的参数
  */
  return $fn($n,$counter,$max);
}
echo (closure(0,&#39;&#39;,10));



이것은 PHP 클로저를 사용하여 재귀를 구현하는 간단한 함수입니다. 사실 이 함수를 조금만 이해하면 됩니다. 수정을 통해 Infinitus 분류와 같은 많은 기능을 얻을 수 있습니다.

내부 클로저 함수에 관해서는 사실 외부 클로저 매개변수를 참조할 필요가 없습니다. 클로저 내부에서 클로저 함수의 매개변수를 설정할 수 있습니다.

클로저 함수는 클로저 함수 내부에 있으므로 클로저 함수의 값을 반환할 필요가 없습니다. 클로저에 변수를 설정하고 이를 클로저 함수에 전달한 다음 클로저를 사용할 수 있습니다. 원하는 것을 재귀적으로 얻으려면, 원하는 것을 배열에 저장한 다음 클로저 함수를 사용하여 얻은 것을 반환합니다. 따라서 클로저 함수에도 반환 값이 없을 수 있습니다. 얻고 싶습니다.

간단히 말해서, 원하는 것을 달성하려면 이 클로저 함수를 사용하고, 필요한 것을 반환하기만 하면 됩니다. 반드시 클로저 함수의 반환 값에서 얻을 필요는 없습니다.


위 내용은 PHP 클로저 기반 구현 함수의 self-calling(recursive) 예제 분석 내용입니다. 더 많은 관련 내용은 PHP 중국어를 참고해주세요. 홈페이지(www.php.cn) !

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.