2016-07-20 1 views
0

PHP를 배우고 Lynda.com PHP 튜토리얼을 시청할 때 질문이있었습니다. https://www.lynda.com/PHP-tutorials/Blocking-suspect-phrases/418256/452170-4.html?autoplay=true
다음은 온라인 양식에서 의심스러운 문구를 탐지하는 코드입니다. $ 값은 온라인 양식 입력 값입니다. 내가 isSuspect을 기능을 알고의심스러운 문구를 탐지하는 데 사용되는 재귀 함수 PHP

$suspect = false; 
$pattern = '/Content-type:|Bcc:|Cc:/i';    

function isSuspect($value, $pattern, &$suspect) { 
    if (is_array($value)) { 
     foreach ($value as $item) { 
      isSuspect($item, $pattern, $suspect); 
     } 
    } else { 
     if (preg_match($pattern, $value)) { 
      $suspect = true; 
     } 
    } 
} 

왜 여기이 재귀 함수를 사용하여 재귀 쓸만이는 다른 {} 부분에 영향을 미치는 방법을 이해하지 못하는 것입니다.

미리 감사드립니다.

답변

0

처음으로 isSuspect 함수를 호출하면 $value이 배열 인 경우 먼저 배열을 검사하여 배열 (foreach ($value as $item)) ...을 반복하고 그 값으로 함수를 다시 호출합니다. 마지막으로 배열이 아닌 $value이 있으면 더 이상 else 부분으로 들어갑니다. 패턴이 일치하는 경우 $value으로 패턴을 확인하고 $suspecttrue으로 설정합니다. $suspect이 현재 기능 범위를 벗어나는 이유는 무엇입니까? true. 글쎄, 기능의 머리를 봐. &$suspect에 주목하십시오. 이것은 참조로 전달됩니다. 참조에 의한 통과와 관련하여 설명서를 검토하십시오 : http://php.net/manual/en/language.references.pass.php.

+0

정말 고마워요! 오랫동안 머리를 긁적 거리게 만들었고 마침내 말이되었습니다. – Eva