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

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

Edit

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

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

这是真的吗?


当前回答

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

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

其他回答

我知道这是旧的,但只是想提一下,我尝试了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()只是count()的别名 正如这里提到的

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

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

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

请使用计数函数,这是一个例子如何计数数组在一个元素

$cars = array("Volvo","BMW","Toyota");
echo count($cars);

函数的作用是:返回数组中元素的个数。

函数的作用是:返回数组中元素的个数。

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

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

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