Heim  >  Artikel  >  Backend-Entwicklung  >  Wie verweisen benutzerdefinierte PHP-Funktionen auf externe Variablen?

Wie verweisen benutzerdefinierte PHP-Funktionen auf externe Variablen?

伊谢尔伦
伊谢尔伦Original
2017-06-26 10:53:423243Durchsuche

Ich bin beim Schreiben der Schleifenverschachtelung in Kommentaren auf ein Problem gestoßen:
Warnung: Ungültiges Argument angegeben für foreach() in /home/yiliaoba/domains/chaochaoblog.com/public_html/ wp-content/ themes/chaochao/comments.php in Zeile 49
Okay, ein ungültiges Argument ist aufgetaucht, also ein nicht verfügbarer Parameter.

Wie ist dieses Problem entstanden? Gehen Sie zurück und suchen Sie den Code wie folgt:
foreach ($comments as $comment) :

Jetzt können Sie sehen, dass $comments ist Variable außerhalb der Funktion , und wir verwenden sie in der Funktion. Gemäß den allgemeinen Programmierideen sollten Variablen außerhalb der Funktion als globale Variablen betrachtet werden. Wenn es sich um globale Variablen handelt, ist es kein Problem, sie in der Funktion aufzurufen.

Es scheint, dass etwas mit PHP und unserem traditionellen Denken nicht stimmt. Was sind also die globalen Variablen in PHP, die ich speziell zum Ausprobieren geschrieben habe?

1. Globale Definition verwenden, um direkt extern auszugeben:

global $mytext;
$mytext=”nihao”;
function chao_echo(){
echo $mytext;
}
chao_echo();

Ergebnis: keine Ausgabe

2. Verwenden Sie das GLOBALS-Array zur Ausgabe:

global $mytext;
$mytext=”nihao”;
function chao_echo(){
echo $GLOBALS['mytext'];
}
chao_echo();

Ergebnis: Die Ausgabe ist normal

3. Deklarieren Sie Variablen außerhalb der Funktion innerhalb der Funktion:

$mytext=”nihao”;
function chao_echo(){
global $mytext;
echo $mytext;
echo $GLOBALS['mytext'];
}
chao_echo();

Ergebnis: Sie können es direkt ausgeben oder die globale Array-Ausgabe von GLOBALS verwenden.
4. Übergeben Sie die externen Variablen der Funktion in die Parameter:

$mytext=”nihao”;
function chao_echo($mytext){
echo $mytext;
}
chao_echo($mytext);

Ergebnis: Kann ausgegeben werden.

Zusammenfassend gibt es in PHP drei Möglichkeiten, Variablen außerhalb der Funktion zu referenzieren:

1. Globale Deklaration außerhalb der Funktion und Verwendung der Array-Referenz $_GLOBALS innerhalb der Funktion.

2. Globale Deklaration innerhalb der Funktion, $_GLOBALS-Array innerhalb der Funktion oder direkte Referenz.

3. Übergeben Sie beim Aufruf der Funktion einen Parameter.

Dann lautet unsere modifizierte Version der verschachtelten Schleifenfunktion wie folgt

<?php 
function chao_comment_circle($chao_id,$comments){
?>
<?php foreach ($comments as $comment)  >
<?php if($comment->comment_parent==$chao_id)  >
    <!-- 子评论 b -->
    <div class="comment_one_sub">
    <?php if (function_exists(&#39;get_avatar&#39;)) { ?> <div class="gravatar_sub"><?php echo get_avatar($comment->comment_author_email,&#39;32&#39;); ?></div> <?php } ?>
    <div class="comment_frame_sub">
     <div class="comment_author_sub"><a href="<?php echo $comment->comment_author_url; ?>"><?php echo $comment->comment_author; ?></a></div>
      <div class="comment_reply_sub" onclick="chao_reply(&#39;<?php echo $comment->comment_ID; ?>&#39;,&#39;<?php echo $comment->comment_author; ?>&#39;)"><a href="#respond">【回复】</a></div>
       <div class="comment_date_sub"><?php echo $comment->comment_date; ?>  <?php echo $comment->comment_time; ?></div>
</div>
<div class="comment_text_sub"><?php echo $comment->comment_content; ?></div>
<?php chao_comment_circle($comment->comment_ID,$comments); ?>
</div>
<!-- 子评论 e -->
<?php endif ?>
<?php endforeach ?>
<?php
}
?>
$chao_id ist die ID unseres übergeordneten Kommentars, das heißt, wir sollten zuerst den Kommentar ausgeben, der keine Antwort ist. und rufen Sie die Antwort am Ende der Ausgabefunktion auf.

Das obige ist der detaillierte Inhalt vonWie verweisen benutzerdefinierte PHP-Funktionen auf externe Variablen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn