Aby znaleźć liczbę elementów w PHP $array
, który jest szybszy / lepszy / silniejszy?
count($array)
czy sizeof($array)
?
Edytować
Dzięki Andy'emu Lesterowi dopracowałem moje pytanie z wielojęzycznego punktu widzenia. Komentatorzy manualni mówią
„[sizeof] nie oznacza tego samego w wielu innych językach opartych na C”
Czy to prawda?
Odpowiedzi:
Użyłbym
count()
ich, jeśli są takie same, ponieważ z mojego doświadczenia wynika, że jest to bardziej powszechne i dlatego sprawi, że mniej programistów czytających twój kod powie „sizeof()
co to jest?” i konieczność zapoznania się z dokumentacją.Myślę, że to znaczy,
sizeof()
że nie działa tak jak w C (obliczanie wielkości typu danych). To zapewne ten wspomina wyraźnie, ponieważ PHP jest napisany w C i zapewnia dużo identycznie nazwanych owijarki do funkcji C (strlen()
,printf()
itp)źródło
Według phpbench :
Czy warto z góry obliczyć długość pętli?
Podana jest pętla z 1000 kluczami o wartości 1 bajtu.
Więc osobiście wolę używać count () zamiast sizeof () z wcześniejszymi obliczeniami .
źródło
Są identyczne zgodnie z
sizeof()
W przypadku braku jakiegokolwiek powodu do martwienia się o „szybsze”, zawsze optymalizuj dla człowieka. Co ma sens dla ludzkiego czytelnika?
źródło
Według strony internetowej
sizeof()
jest to aliascount()
, więc powinny one uruchamiać ten sam kod. Być możesizeof()
ma trochę narzutów, ponieważ musi to rozwiązaćcount()
? Powinno to być jednak bardzo minimalne.źródło
Wiem, że to stare, ale chciałem tylko wspomnieć, że próbowałem tego z PHP 7.2:
a wynik był:
Więc po prostu użyj
count()
.źródło
1 000 000 000 iteration of count() took 525 sec
1 000 000 000 iteration of sizeof() took 1361 sec
sizeof()
jest tylko aliasem,count()
jak wspomniano tutajhttp://php.net/manual/en/function.sizeof.php
źródło
Proszę użyć funkcji liczenia, oto przykład liczenia tablicy w elemencie
count()
Zwraca liczbę elementów macierzy.sizeof()
Zwraca liczbę elementów macierzy.sizeof()
Funkcja jest aliasemcount()
funkcji.źródło