count和sizeof有什么区别?

时间:2015-03-02 11:56:05

标签: php

我想计算一些数组中的值的数量。

countsizeof之间有什么区别?

$recips = array();
echo count($recips);
echo sizeof($recips);

2 个答案:

答案 0 :(得分:8)

'sizeof'是'count'的别名-至少根据PHP手册!

实际上,这两个函数的行为不同,至少在执行时间方面有所不同-sizeof的执行时间明显更长!

结论是:sizeof不是count的别名

示例:

<?php
$a = array();
for ($i = 0; $i < 1000000; ++$i) {
    $a[] = 100;
}


function measureCall(\Closure $cb)
{
    $time = microtime(true);
    call_user_func($cb);
    return microtime(true) - $time;
}

for ($i = 0; $i < 3; ++$i) {
    echo measureCall(function () use ($a) {
            for ($i = 0; $i < 10000000; ++$i) {
                count($a);
            }
        }) . " seconds for count!\n";

    echo measureCall(function () use ($a) {
            for ($i = 0; $i < 10000000; ++$i) {
                sizeof($a);
            }
        }) . " seconds for sizeof!\n";
}

结果是:

0.9708309173584 seconds for count!
3.1121120452881 seconds for sizeof!
1.0040831565857 seconds for count!
3.2126860618591 seconds for sizeof!
1.0032908916473 seconds for count!
3.2952871322632 seconds for sizeof!

更新: 该测试是在PHP 7.2.6上执行的

答案 1 :(得分:5)

这些函数是别名,如上所述 - &gt; http://php.net/manual/en/function.sizeof.php