[php] PHP 배열 : count 또는 sizeof?

PHP에서 요소의 수를 찾으려면 $array어느 것이 더 빠르거나 더 낫습니까?

count($array)또는 sizeof($array)?

편집하다

Andy Lester 덕분에 다국어 관점에서 의미를 갖도록 질문을 수정했습니다. 수동 의견자는 말합니다

“[sizeof]는 C를 기반으로하는 다른 많은 언어에서 같은 의미가 아닙니다”

이것이 사실입니까?



답변

내가 사용하는 것이 count()그들이 내 경험에 더 일반적입니다, 따라서 말을 코드를 읽고 적은 개발자의 원인이되므로, 동일한 경우 ” sizeof(), 즉 무엇인가?” 문서를 참조해야합니다.

sizeof()C에서와 같이 작동하지 않는다는 것을 의미한다고 생각합니다 (데이터 유형의 크기 계산). 아마 PHP는 C로 작성 명시 때문에 언급을했고, C 기능 (대한 동일한 이름의 래퍼를 많이 제공 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);
    //...
}

1 바이트 값을 가진 1000 개의 키가있는 루프가 제공됩니다.

                  +---------+----------+
                  | count() | sizeof() |
+-----------------+---------+----------+
| With precalc    |     152 |      212 |
| Without precalc |   70401 |    50644 |
+-----------------+---------+----------+  (time in µs)

그래서 개인적 으로 pre calc과 함께 sizeof () 대신 count () 를 사용하는 것을 선호합니다 .


답변

그들은에 따라 동일 sizeof()

“빠른”에 대해 걱정할 이유가없는 경우 항상 인간을 위해 최적화하십시오. 인간 독자에게는 어떤 의미가 있습니까?


답변

웹 사이트에 따르면 sizeof()의 별칭은 count()동일한 코드를 실행해야합니다. 아마도 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()count()
여기에 언급 된 것처럼 별칭입니다 .

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


답변

count 함수를 사용하십시오. 요소의 배열을 세는 방법의 예는 다음과 같습니다.

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

count()함수는 배열의 요소 수를 반환합니다.

sizeof()함수는 배열의 요소 수를 반환합니다.

sizeof()기능의 별칭입니다 count()기능.