PHP массив: посчитать или размер?
чтобы найти количество элементов в PHP $array, Что быстрее/лучше/сильнее?
count($array) или sizeof($array) ?
Edit
благодаря Энди Лестеру, я уточнил свой вопрос, чтобы иметь в виду с многоязычной точки зрения. Руководство комментаторы говорят
" [sizeof] не означает то же самое в
многие другие языки основаны на C"
- Это правда?
7 ответов:
Я хотел бы использовать
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); //... }задается цикл с 1000 ключами и 1 байтом значений.
С pre calc-count ()Общее время: 152 МКС
без предварительного calc-count () Общее время: 70401 МКС
С pre calc-sizeof () Общее время: 212 МКС
без предварительного calc-sizeof () Итого время: 50644 МКС
поэтому я лично предпочитаю использовать count () вместо sizeof ()С pre calc.
они идентичны по
sizeof()при отсутствии каких-либо причин беспокоиться о "быстром", всегда оптимизируйте для человека. Что имеет больше смысла для читателя-человека?
согласно сайту,
sizeof()- это псевдонимcount(), поэтому они должны работать с одним и тем же кодом. Возможноsizeof()имеет немного накладных расходов, потому что он должен решить егоcount()? Оно должно быть минимальным.
Я знаю, что это старый, но просто хотел отметить, что Я пробовал это:
<?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().
пожалуйста, используйте функцию count, вот пример как считать массив в элементе
$cars = array("Volvo","BMW","Toyota"); echo count($cars);The
count()функция возвращает количество элементов в массиве.The
sizeof()функция возвращает количество элементов в массиве.The
sizeof()функция является псевдонимом
Comments