要查找PHP $array
中的元素数量,哪个更快/更好/更强?
count($array)
或sizeof($array)
?
感谢Andy Lester,我从多语言角度提炼了我的问题。手动评论者说
“[sizeof]并不代表相同的意思 许多其他语言基于C“
这是真的吗?
答案 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()
的别名
如这里提到的
答案 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()
函数的别名。