2016-07-20 21 views
0

我正在學習PHP,並在觀看Lynda.com php教程時遇到問題。 https://www.lynda.com/PHP-tutorials/Blocking-suspect-phrases/418256/452170-4.html?autoplay=true
以下是用於檢測在線表單中可疑短語的代碼。 $ value是在線表單輸入值。用於檢測可疑短語的遞歸函數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; 
     } 
    } 
} 

我知道功能isSuspect是一個遞歸function.I不明白,爲什麼在這裏用這個遞歸函數,它會如何影響其他{}部分。

在此先感謝。

回答

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