查找PHP $数组中的元素数量,哪个更快/更好/更强?

计数($array)或sizeof($array) ?

Edit

感谢安迪·莱斯特,我把我的问题从多语言的角度提炼了出来。手册评论者说

“[sizeof]在里面的意思不一样 许多基于C语言的其他语言”

这是真的吗?


当前回答

Sizeof()只是count()的别名 正如这里提到的

http://php.net/manual/en/function.sizeof.php

其他回答

根据网站的说法,sizeof()是count()的别名,所以它们应该运行相同的代码。也许sizeof()有一点开销,因为它需要解析它来count()?它应该是非常小的。

根据sizeof(),它们是相同的

在没有任何理由担心“更快”的情况下,始终为人类优化。哪个对人类读者更有意义?

如果它们是相同的,我会使用count(),因为在我的经验中,它更常见,因此会导致更少的开发人员在阅读您的代码时说“sizeof(),这是什么?”并且不得不查阅文档。

我认为这意味着sizeof()不像在C中那样工作(计算数据类型的大小)。之所以明确提到这一点,可能是因为PHP是用C语言编写的,并为C函数提供了许多同名的包装器(strlen(), printf()等)

根据phpbench:

值得花费精力提前计算循环的长度吗?

//pre-calculate the size of array
$size = count($x); //or $size = sizeOf($x);

for ($i=0; $i<$size; $i++) {
    //...
}

//don't pre-calculate
for ($i=0; $i<count($x); $i++) { //or $i<sizeOf($x);
    //...
}

给出了一个具有1000个键和1字节值的循环。

                  +---------+----------+
                  | count() | sizeof() |
+-----------------+---------+----------+
| With precalc    |     152 |      212 |
| Without precalc |   70401 |    50644 |
+-----------------+---------+----------+  (time in µs)

所以我个人更喜欢使用count()而不是sizeof()与pre calc。

Sizeof()只是count()的别名 正如这里提到的

http://php.net/manual/en/function.sizeof.php