| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1870 人关注过本帖
标题:count()函数的统计
只看楼主 加入收藏
czg123698741
Rank: 2
等 级:论坛游民
帖 子:348
专家分:84
注 册:2009-3-4
结帖率:78.99%
收藏
已结贴  问题点数:0 回复次数:10 
count()函数的统计
请高手们帮一下忙,小弟初次接触PHP。但愿帮我解忧~~~
代码如下:
<?php
$array = array("php" => array("PHP函数参考大全","PHP程序开发范例宝典","PHP数据库系统开发完全手册"),
               "asp" => array("ASP经验技巧宝典")
         );
echo count($array,COUNT_RECURSIVE);
?>

运行结果:6

疑问:
《1》——我不明白所谓的递归统计数组元素的个数是如何的递归啊??我明明看见这是只是4哥元素,它何来统计成6个呢??
《2》——如果将COUNT_RECURSIVE参数去掉,运行就结果是:2;这又是为什么啊??
《3》——请问如何判断PHP里面那些是2维数组、3维数组、4维数组,等等?????(请举例子)

鸣谢各位大哥得留言!!!!!!!!
搜索更多相关主题的帖子: count 函数 统计 
2009-07-21 01:12
外部三电铃
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:那一年
等 级:贵宾
威 望:57
帖 子:2012
专家分:7306
注 册:2007-12-17
收藏
得分:0 
跟楼主有同样的疑惑,等待高手

那一年,苍井空还是处女
2009-07-21 04:31
flynet
Rank: 3Rank: 3
来 自:北京
等 级:论坛游民
威 望:7
帖 子:352
专家分:60
注 册:2007-1-28
收藏
得分:10 
我也不是 高手 但我也发表下自己的看法吧
count 函数 中 如果 mode 被设置为 COUNT_RECURSIVE(或 1),则会递归底计算多维数组中的数组的元素个数(也就是你结果的6)。如果不设置 mode 默认为0  。不检测多维数组(数组中的数组)(也就是你的结果2)。
大数组$array 包括 php 和asp 2个数组

[[it] 本帖最后由 flynet 于 2009-7-21 09:26 编辑 [/it]]

PHP 新人 不断学习进取中。。。
2009-07-21 09:25
flynet
Rank: 3Rank: 3
来 自:北京
等 级:论坛游民
威 望:7
帖 子:352
专家分:60
注 册:2007-1-28
收藏
得分:0 
关于第三个问题 我想没有什么实际意义吧? 可以用循环的方法来判断

PHP 新人 不断学习进取中。。。
2009-07-21 09:29
flynet
Rank: 3Rank: 3
来 自:北京
等 级:论坛游民
威 望:7
帖 子:352
专家分:60
注 册:2007-1-28
收藏
得分:0 
第三个问题 我在想 是否可以用count()的mode 参数 来 解决 mode=0 是 最外层数组个数 mode=1 是所有的多维数组 个数  那么  只要 mode=1 的 个数 比mode=0的多1个 说明 就是2维了吧  3维的或者4维的 我想 可以采取 对这段代码实行 循环比较 应该是能 出来的 只是我的想法  您也可以根据多维数组的规律考虑下 我说的方法的一个 逻辑

PHP 新人 不断学习进取中。。。
2009-07-21 09:36
czg123698741
Rank: 2
等 级:论坛游民
帖 子:348
专家分:84
注 册:2009-3-4
收藏
得分:0 
回复 3楼 flynet
版主你好:
——关于count()函数加上COUNT_RECURSIVE参数怎么在数组中统计出6哥元素啊?我明明看见这是只是4哥元素,它何来统计成6个呢??可以叫一下我如何看出是6个吗???
——如果将COUNT_RECURSIVE参数去掉,运行就结果是:2,这个2就是,大数组$array 包括 php 和asp 2个数组,这样想对吗??
——还有您论述了关于第三个问题,mode参数默认值为0,是COUNT_RECURSIVE(或 1)此参数的选值。书上是这么定义二维数组的:【一个数组的元素如果是一个一维数组,则成这个数组是二维数组】。这是书中的相应例子:
<?php
$str = array (
     "书籍"=>array ("文学","历史","地理"),
 "体育用品"=>array ("m"=>"足球","n"=>"篮球"),
 "水果"=>array ("橙子",8=>"葡萄","苹果") );
print_r ( $str) ;
?>
但是我怎么看都好像是三维数组吧!!??我学过C#所以不懂得什么是【指针】,请不要见怪!
2009-07-21 10:50
dws0706
Rank: 2
等 级:论坛游民
帖 子:18
专家分:10
注 册:2009-3-13
收藏
得分:10 
<?php
$array = array("php" => array("PHP函数参考大全","PHP程序开发范例宝典","PHP数据库系统开发完全手册"),
               "asp" => array("ASP经验技巧宝典")
         );
echo count($array,COUNT_RECURSIVE);
?>

运行结果:6

第一个问题:
递归就是每次运行都会调用自己,直到遍历完毕。
首先遍历的是外面的数组array得出有两个元素("php","asp")
再遍历php数组和asp数组得出的是四个元素 (("PHP函数参考大全","PHP程序开发范例宝典","PHP数据库系统开发完全手册"),("ASP经验技巧宝典"))
然后2+4=6

第二个问题:
COUNT_RECURSIVE参数去掉,不会去递归,调用一次就完咯,也就是遍历两个数组就结束,所以结果等于2

第三个问题:
可以理解为:一维就是数组,二维就是数组中的数组.......

嘻嘻,献丑咯

[[it] 本帖最后由 dws0706 于 2009-7-21 10:57 编辑 [/it]]

个人邮箱:dws0706@
2009-07-21 10:51
flynet
Rank: 3Rank: 3
来 自:北京
等 级:论坛游民
威 望:7
帖 子:352
专家分:60
注 册:2007-1-28
收藏
得分:0 
回复 6楼 czg123698741
关于 前2个问题 你需要 仔细看一下 count() 函数的用法 在教程中有详细的说明 你应该会明白 我说的没错  关于第三个问题 着实我没那么做过所以我只能和你讨论

PHP 新人 不断学习进取中。。。
2009-07-21 11:49
flynet
Rank: 3Rank: 3
来 自:北京
等 级:论坛游民
威 望:7
帖 子:352
专家分:60
注 册:2007-1-28
收藏
得分:0 
<?php
$str = array (
     "书籍"=>array ("文学","历史","地理"),
"体育用品"=>array ("m"=>"足球","n"=>"篮球"),
"水果"=>array ("橙子",8=>"葡萄","苹果") );
print_r ( $str) ;
?>  你的 这个 例子 的确是 2维数组 因为 大数组 是 书籍,体育用品,水果  而 这3个 都是由 数组组成的 array ("文学","历史","地理"),array ("m"=>"足球","n"=>"篮球"),array ("橙子",8=>"葡萄","苹果") ); 这3个 对吧 但是 里面的 文学 之类 都只是元素 并不是 数组,"m"=>"足球" 这样的元素的意思 我想我不说你也该明白 所以他是二维的

PHP 新人 不断学习进取中。。。
2009-07-21 11:52
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
——关于count()函数加上COUNT_RECURSIVE参数怎么在数组中统计出6哥元素啊?我明明看见这是只是4哥元素,它何来统计成6个呢??可以叫一下我如何看出是6个吗???
递归的计算所用元素的个数,二维数组中的每一行也是作为二维数组的元素,所以它要回递归计数。所以过程应该是1+3+1+1=6
——如果将COUNT_RECURSIVE参数去掉,运行就结果是:2,这个2就是,大数组$array 包括 php 和asp 2个数组,这样想对吗??我也是这样理解的
——还有您论述了关于第三个问题,mode参数默认值为0,是COUNT_RECURSIVE(或 1)此参数的选值。书上是这么定义二维数组的:【一个数组的元素如果是一个一维数组,则成这个数组是二维数组】。这是书中的相应例子:
<?php
$str = array (
     "书籍"=>array ("文学","历史","地理"),
"体育用品"=>array ("m"=>"足球","n"=>"篮球"),
"水果"=>array ("橙子",8=>"葡萄","苹果") );
print_r ( $str) ;
?>
但是我怎么看都好像是三维数组吧!!??我学过C#所以不懂得什么是【指针】,请不要见怪!
PHP里面的数组元素有键值的概念,可以通过下标来访问元素,也可以通过键值来访问,都是唯一标示数组元素的值。所以key==>value。貌似也没有直接牵扯到指针。

倚天照海花无数,流水高山心自知。
2009-07-22 21:04
快速回复:count()函数的统计
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.036720 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved