在写到评论的循环嵌套的时候遇到一个问题:
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();结果:没有输出;
立即学习“PHP免费学习笔记(深入)”;
2.用GLOBALS数组输出:
global $mytext;
$mytext=”nihao”;
function chao_echo(){
echo $GLOBALS['mytext'];
}
chao_echo();结果:输出正常
3.在函数内全局申明函数外的变量:
1CMS核心特点 安全稳定,轻量高效 采用精简代码架构,安装包体积不足1MB,无冗余功能,确保系统运行高效稳定。 广泛兼容性 全面支持PHP 5.2至PHP 8.4版本,适配MySQL及SQLite数据库,满足多样化部署需求。 灵活的内容管理 提供数十种专业输入字段类型,助力快速构建各类网站。 支持自定义栏目变量、文章字段及
$mytext=”nihao”;
function chao_echo(){
global $mytext;
echo $mytext;
echo $GLOBALS['mytext'];
}
chao_echo();结果:直接输出或者用GLOBALS全局数组输出都行。
4.将函数外部变量用参数传递进去:
$mytext=”nihao”;
function chao_echo($mytext){
echo $mytext;
}
chao_echo($mytext);结果:可以输出。
总结一下,php中,函数内引用函数外的变量三种方法:
1.函数外global声明,函数内使用$_GLOBALS数组引用。
2.函数内global声明,函数内$_GLOBALS数组或者直接引用。
3.在调用函数的时候用一个参数传递。
那么,我们修改版的循环嵌套的函数如下
comment_parent==$chao_id) >
comment_author_email,'32'); ?>
【回复】
comment_date; ?> comment_time; ?>
comment_content; ?>
comment_ID,$comments); ?>
$chao_id是我们母评论的ID,即我们因该先输出不是回复的评论,在其末尾调用该回复输出函数。










