2016-07-20 11 views
0

Ich lerne PHP und hatte eine Frage beim Anschauen von Lynda.com PHP-Tutorial. https://www.lynda.com/PHP-tutorials/Blocking-suspect-phrases/418256/452170-4.html?autoplay=true
Folgendes ist der Code zum Erkennen verdächtiger Ausdrücke in Online-Formularen. $ value ist der Online-Formulareingabewert.Rekursive Funktion zum Erkennen von verdächtigen Phrasen 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; 
     } 
    } 
} 

I Funktion isSuspect wissen ist eine rekursive function.I verstehe nicht, warum mit dieser rekursiven Funktion hier und wie es das sonst beeinflussen würde {} Teil.

Vielen Dank im Voraus.

Antwort

0

Wenn Sie die Funktion isSuspect das erste Mal aufrufen, überprüft er zuerst, ob die $value ein Array ist, wenn dem so ist, es durch die Array-Loops (foreach ($value as $item)) ... und ruft die Funktion wieder mit einem beliebigen Wert davon. wenn es endlich die $value kein Array mehr gibt geht es in den else Teil. Dort überprüft es das Muster mit $value und setzt $suspect auf true, wenn es übereinstimmt. Sie können sich jetzt fragen, warum ist $suspect außerhalb der Funktion jetzt auch true. Nun, schau dir den Leiter der Funktion an. Sie bemerken die &$suspect. Dies geschieht durch Bezugnahme. Sehen Sie sich das Handbuch zum Referenzieren an: http://php.net/manual/en/language.references.pass.php.

+0

Vielen Dank !!! Es hat mich lange am Kopf kratzen lassen und es macht schließlich Sinn. – Eva