当前位置:编程学习 > php >>

解释一段PHP程序

<?php $food=array('fruits'=>array('orange','banana','apple'),'veggie'=>array('carrot','collard','pea')); echo count($food,COUNT_RECURSIVE); echo "<br>"; echo count($food);?> 结果为什么是:82
答案:楼主的那段代码,其实是手册里面的例子,看看手册 count() 如何解释的:

count
(PHP 3, PHP 4, PHP 5)
count -- 计算数组中的单元数目或对象中的属性个数
说明
int count ( mixed var [, int mode] )


返回 var 中的单元数目,通常是一个 array,任何其它类型都只有一个单元。 

对于对象,如果安装了 SPL,可以通过实现 Countable 接口来调用 count()。该接口只有一个方法 count(),此方法返回 count() 函数的返回值。 

如果 var 不是数组类型或者实现了 Countable 接口的对象,将返回 1,有一个例外,如果 var 是 NULL 则结果是 0。 

注意: 可选的 mode 参数自 PHP 4.2.0 起可用。 

如果可选的 mode 参数设为 COUNT_RECURSIVE(或 1),count() 将递归地对数组计数。对计算多维数组的所有单元尤其有用。mode 的默认值是 0。count() 识别不了无限递归。
其他:建议你先把文件夹里读出来的所有文件放入一个数组,然后用print_r看看读出来的都是些什么,这想看后你会明白很多 // 调用show_list 函数,传递一个字符串
   show_list("/web/htdocs/www.demo.com/home/"); 

//下面的函数是迭代遍历/web/htdocs/www.demo.com/home/目录,输出所有文件的文件名
function show_list($path){
        if(is_dir($path)){
                $dp=dir($path);
                while($file=$dp->read())
                        if($file!='.'&&$file!='..')
                                show_list($path.'/'.$file);
                $dp->close();
        }
        echo "$path<br>";
} 取得/web/htdocs/www.demo.com/home/ 目录下的所有文件 不含文件夹 show_list("/web/htdocs/www.demo.com/home/");
function show_list($path){
        if(is_dir($path)){//如果目录存在
                $dp=dir($path);//打开目录
                while($file=$dp->read())//循环读取
                        if($file!='.'&&$file!='..')//如果遍历的结果中不存在.和..开始执行
                                show_list($path.'/'.$file);//遍历$path下的$file目录
                $dp->close();//关闭目录
        }
        echo "$path<br>";
}

其实杨Shine的建议很好,调试和理解代码,最简单和直接的方式就是输出。你在每一个执行语句下输出结果,就会明白代码的含义。

这段代码主要功能是“遍历”,遍历某个文件夹下的所有文件夹,输出文件夹信息。 换行符你写错了。。。
echo "<br />";
这样输出就是:
8
2 参数为 COUNT_RECURSIVE(或 1),count()将递归地对数组计数。所以是8。 

上一个:诚心求php程序员工作
下一个:PHP程序问题

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,