要查找PHP中的元素数量$array,哪个更快/更好/更强?
count($array)还是sizeof($array)?
感谢Andy Lester,我从多语言角度提炼了我的问题.手动评论者说
"[sizeof]在基于C的许多其他语言中并不相同"
这是真的?
ale*_*lex 181
count()如果它们是相同的话我会使用它,因为根据我的经验它更常见,因此会减少开发人员阅读你的代码说" sizeof()那是什么?" 并且必须查阅文档.
我认为这意味着sizeof()它不像在C中那样工作(计算数据类型的大小).它可能使这个明确提到由于PHP是用C语言编写,并提供了大量具有相同名称的包装为C函数(strlen(),printf(),等)
Rez*_*ngi 87
根据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);
//...
}
Run Code Online (Sandbox Code Playgroud)
给出了具有1000个键,具有1个字节值的循环.
预计算 - 计数()总时间:152μs
没有预计算 - 计数()总时间:70401μs
使用pre calc - sizeof()总时间:212μs
没有预计 - sizeof()总时间:50644μs
所以我个人更喜欢使用count()而不是sizeof() 和pre calc.
And*_*off 18
根据网站,sizeof()是别名count(),所以他们应该运行相同的代码.也许sizeof()有一点开销,因为它需要解决它count()?它应该是非常小的.
<?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");
?>
Run Code Online (Sandbox Code Playgroud)
结果是:
1 000 000 000 iteration of count() took 414 sec
1 000 000 000 iteration of sizeof() took 1369 sec
Run Code Online (Sandbox Code Playgroud)
所以就用吧count()。
sizeof()只是count()
这里提到的别名
http://php.net/manual/zh/function.sizeof.php