它输出什么?

看一个小问题,问:

echo count("abc"); 输出什么?

刚开始反映的是3,结果输入代码一试才知道,原来输出是1。

看看手册的解释吧:

count -- 计算数组中的单元数目或对象中的属性个数(这个咱们都知道地..)

它的基本格式:

int count ( mixed var [, int mode] )
返回 var 中的单元数目,通常是一个 array,任何其它类型都只有一个单元(注意这里)。 对于对象,如果安装了 SPL(Standard PHP Library (SPL) Functions,PHP标准函数库),可以通过实现 Countable 接口来调用 count()。该接口只有一个方法 count(),此方法返回 count() 函数的返回值。 如果 var 不是数组类型或者实现了 Countable 接口的对象,将返回 1,有一个例外,如果 var 是 NULL 则结果是 0。 如果可选的 mode 参数设为 COUNT_RECURSIVE(或 1),count() 将递归地对数组计数。对计算多维数组的所有单元尤其有用。mode 的默认值是 0。count() 识别不了无限递归。

看看它的实例:

我们最常用的方法莫过于下面这种了:

<?php
$a[0] = 1;
$a[1] = 3;
$a[2] = 5;
$result = count($a);
// $result == 3

$b[0] = 7;
$b[5] = 9;
$b[10] = 11;
$result = count($b);
// $result == 3;

$result = count(null);
// $result == 0

$result = count(false);
// $result == 1
?> 

下面的代码可能不是很常用:count() 的递归例子(PHP >= 4.2.0)

<?php
$food = array('fruits'  => array('orange', 'banana', 'apple'),
              'veggie'  => array('carrot', 'collard','pea'));

// recursive count
echo count($food, COUNT_RECURSIVE);  // output 8

// normal count
echo count($food);                  // output 2
?> 

这下,知道为什么会输出1了吧?:->

posted @ 2010-09-26 00:33  无墨来点睛  Views(313)  Comments(0Edit  收藏  举报