Rumah > pembangunan bahagian belakang > tutorial php > php自定义函数如何引用外部变量?

php自定义函数如何引用外部变量?

伊谢尔伦
Lepaskan: 2023-03-11 13:40:02
asal
3407 orang telah melayarinya

在写到评论的循环嵌套的时候遇到一个问题:
Warning: Invalid argument supplied for foreach() in /home/yiliaoba/domains/chaochaoblog.com/public_html/wp-content/themes/chaochao/comments.php on line 49
好了,出现了一个invalid argument,即一个不可用的参数。

这个问题是怎么产生的呢,回去找找代码如下:
foreach ($comments as $comment) :

这下就看出来了,$comments 是函数外的变量,而我们就在函数中使用了。按照一般程序编写的思路,函数外的变量应该是可以看成全局变量的,如果是全局变量的话,那么在函数中调用是完全没有问题的。

看来php和我们传统的思路有点问题,那么php中全局变量是怎么的呢,我特意编写代码试试看。

1.在外部用global定义直接输出:

global $mytext;
$mytext=”nihao”;
function chao_echo(){
echo $mytext;
}
chao_echo();
Salin selepas log masuk

结果:没有输出;

2.用GLOBALS数组输出:

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

结果:输出正常

3.在函数内全局申明函数外的变量:

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

结果:直接输出或者用GLOBALS全局数组输出都行。
4.将函数外部变量用参数传递进去:

$mytext=”nihao”;
function chao_echo($mytext){
echo $mytext;
}
chao_echo($mytext);
Salin selepas log masuk

结果:可以输出。

总结一下,php中,函数内引用函数外的变量三种方法:

1.函数外global声明,函数内使用$_GLOBALS数组引用。

2.函数内global声明,函数内$_GLOBALS数组或者直接引用。

3.在调用函数的时候用一个参数传递。
那么,我们修改版的循环嵌套的函数如下

<?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
}
?>
Salin selepas log masuk

$chao_id是我们母评论的ID,即我们因该先输出不是回复的评论,在其末尾调用该回复输出函数。

Atas ialah kandungan terperinci php自定义函数如何引用外部变量?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan