PHP数组:count还是sizeof?

时间:2010-10-20 02:46:59

标签: php

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

count($array)sizeof($array)

修改

感谢Andy Lester,我从多语言角度提炼了我的问题。手动评论者说

  

“[sizeof]并不代表相同的意思   许多其他语言基于C“

这是真的吗?

8 个答案:

答案 0 :(得分:174)

如果它们相同,我会使用count(),因为根据我的经验,它更常见,因此会减少开发人员阅读代码时说“sizeof(),那是什么?”并且必须查阅文档。

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

答案 1 :(得分:84)

根据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个字节的值。

  

预计算 - 计数()总时间:152μs

     

没有预计算 - 计数()总时间:70401μs

     

使用pre calc - sizeof()总时间:212μs

     

没有预计算 - sizeof()总时间:50644μs

所以我个人更喜欢使用 count()代替 sizeof() 并使用预计算

答案 2 :(得分:37)

根据sizeof()

,它们是相同的

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

答案 3 :(得分:17)

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

答案 4 :(得分:5)

我知道这很老了,但只想提及I tried this在PHP 7.2中:

<?php
//Creating array with 1 000 000 elements
$a = array();
for ($i = 0; $i < 1000000; ++$i)
{
    $a[] = 100;
}

//Measure
$time = time();
for ($i = 0; $i < 1000000000; ++$i)
{
    $b = count($a);
}
print("1 000 000 000 iteration of count() took ".(time()-$time)." sec\n");

$time = time();
for ($i = 0; $i < 1000000000; ++$i)
{
    $b = sizeof($a);
}
print("1 000 000 000 iteration of sizeof() took ".(time()-$time)." sec\n");
?>

结果是:

1 000 000 000 iteration of count() took 414 sec
1 000 000 000 iteration of sizeof() took 1369 sec

因此只需使用count()

答案 5 :(得分:4)

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

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

答案 6 :(得分:0)

两者均用于对数组中的元素进行计数。 sizeof()函数是PHP中使用的count()函数的别名。但是,count()函数比sizeof()更快,更快捷。

答案 7 :(得分:-1)

请使用count函数,以下是如何计算元素中数组的示例

|noFrameStart|

    +----+-----+-----+
    | A  | B   | C   |
    +----+-----+-----+

|noFrameEnd|

$cars = array("Volvo","BMW","Toyota"); echo count($cars); 函数返回数组中元素的数量。

count()函数返回数组中元素的数量。

sizeof()函数是sizeof()函数的别名。