【问题标题】:What is the difference between count and sizeof?count 和 sizeof 有什么区别?
【发布时间】:2015-03-02 11:56:05
【问题描述】:

我想计算某个数组中的值的数量。

count 和 sizeof 有什么区别?

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

【问题讨论】:

  • 无,sizeof 是count() 的别名
  • PHP array: count or sizeof? 的可能重复项
  • Alex 在最后一个@CodingCracker 提供的链接中的答案就是您要找的。这也有助于理解 sizeof 通常不是您的实际意思,但在 PHP 中它只是 count 的别名。

标签: php


【解决方案1】:

'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 上执行

【讨论】:

  • 我认为你不应该将两个目标放在同一个文件中......第一个目标会浪费机器资源然后给出错误的结果。我在我的机器上得到了相同的结果。 PHP 7.4.5 (cli) ( ZTS Visual C++ 2017 x64 )
【解决方案2】:

这些函数是别名,如前所述 -> http://php.net/manual/en/function.sizeof.php

【讨论】:

    猜你喜欢
    • 2011-02-22
    • 2020-03-02
    • 2014-08-13
    • 2022-11-27
    • 2020-11-10
    • 2014-06-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多