Comment les fonctions personnalisées PHP référencent-elles des variables externes ?

伊谢尔伦
Libérer: 2023-03-11 13:40:02
original
3273 Les gens l'ont consulté

J'ai rencontré un problème lors de l'écriture de l'imbrication de boucles dans les commentaires :
Avertissement : argument non valide fourni pour foreach() dans /home/yiliaoba/domains/chaochaoblog.com/public_html/ wp-content/ theme/chaochao/comments.php à la ligne 49
D'accord, un argument invalide est apparu, c'est-à-dire un paramètre indisponible.

Comment ce problème est-il survenu ? Revenez en arrière et trouvez le code comme suit :
foreach ($comments as $comment) :

Vous pouvez maintenant voir que $comments est variable en dehors de la fonction , et nous l'utilisons dans la fonction. Selon les idées générales de programmation, les variables en dehors de la fonction doivent être considérées comme des variables globales. S'il s'agit de variables globales, il n'y a aucun problème à les appeler dans la fonction.

Il semble qu'il y ait quelque chose qui ne va pas avec PHP et notre pensée traditionnelle. Alors, quelles sont les variables globales en PHP, j'ai spécialement écrit le code pour l'essayer ?

1. Utilisez la définition globale pour afficher directement en externe :

global $mytext;
$mytext=”nihao”;
function chao_echo(){
echo $mytext;
}
chao_echo();
Copier après la connexion

Résultat : aucune sortie

2. Utilisez le tableau GLOBALS pour afficher :

global $mytext;
$mytext=”nihao”;
function chao_echo(){
echo $GLOBALS['mytext'];
}
chao_echo();
Copier après la connexion

Résultat : La sortie est normale

3. Déclarez globalement les variables en dehors de la fonction au sein de la fonction :

$mytext=”nihao”;
function chao_echo(){
global $mytext;
echo $mytext;
echo $GLOBALS['mytext'];
}
chao_echo();
Copier après la connexion
<🎜. >Résultat : vous pouvez le sortir directement ou utiliser la sortie du tableau global GLOBALS.

4. Passez les variables externes de la fonction dans les paramètres :

$mytext=”nihao”;
function chao_echo($mytext){
echo $mytext;
}
chao_echo($mytext);
Copier après la connexion
Résultat : Peut être sorti.

Pour résumer, en PHP, il existe trois façons de

référencer des variables en dehors de la fonction :

1 Déclaration globale en dehors de la fonction, et utiliser la référence de tableau $_GLOBALS. à l'intérieur de la fonction.

2. Déclaration globale dans la fonction, tableau $_GLOBALS dans la fonction ou référence directe.

3. Passez un paramètre lors de l'appel de la fonction.

Ensuite, notre version modifiée de la fonction de boucle imbriquée est la suivante

<?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
}
?>
Copier après la connexion
$chao_id est l'ID de notre commentaire parent, c'est-à-dire que nous devons d'abord afficher le commentaire qui n'est pas une réponse, et appelez la réponse à la fin de la fonction Output.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal