Maison >développement back-end >tutoriel php >Comment les fonctions personnalisées PHP référencent-elles des variables externes ?
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();
Résultat : aucune sortie
2. Utilisez le tableau GLOBALS pour afficher :
global $mytext; $mytext=”nihao”; function chao_echo(){ echo $GLOBALS['mytext']; } chao_echo();
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();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);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('get_avatar')) { ?> <div class="gravatar_sub"><?php echo get_avatar($comment->comment_author_email,'32'); ?></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('<?php echo $comment->comment_ID; ?>','<?php echo $comment->comment_author; ?>')"><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 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!