查找PHP $array中的元素数量,哪个更快/更好/更强?
$array
count($array)还是sizeof($array) ?
count($array)
sizeof($array)
感谢安迪·莱斯特,我把我的问题从多语言的角度提炼了出来。手册评论者说
"[sizeof]并不意味着相同的in
这是真的吗?
根据网站,sizeof()是count()的别名,所以它们应该运行相同的代码。也许sizeof()有一点开销,因为它需要将它解析为count()?它应该是非常小的。
sizeof()
count()
根据sizeof(),它们是相同的
在没有任何理由担心“更快”的情况下,始终为人类优化。哪个对人类读者更有意义?
如果它们是相同的,我会使用count(),因为在我的经验中,它更常见,因此会导致更少的开发人员在阅读你的代码时说“sizeof(),那是什么?”并不得不查阅文档。
我认为这意味着sizeof()不像在C中那样工作(计算数据类型的大小)。之所以明确提到这一点,可能是因为PHP是用C语言编写的,并为C函数提供了许多同名的包装器(strlen(), printf()等)。
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
请使用计数函数,这是一个例子如何计数数组在一个元素
$cars = array("Volvo","BMW","Toyota"); echo count($cars);
count()函数的作用是:返回数组中元素的个数。
sizeof()函数的作用是:返回数组中元素的个数。
sizeof()函数是count()函数的别名。
我知道这是旧的,但只是想提到我试过了与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()。
两者都用于计数数组中的元素。sizeof()函数是PHP中使用的count()函数的别名。然而,count()函数比sizeof()更快更好。