Что лучше использовать в PHP для добавления члена массива,
$array[] = $value;
или
array_push($array, $value);
?
Хотя в руководстве говорится, что вам лучше избегать вызова функции, я также читал, что $array[]
он намного медленнее, чем array_push()
. Какие есть уточнения или тесты?
php
arrays
performance
Алекс
источник
источник
Ответы:
Нет тестов, но я лично считаю, что
$array[]
это чище, и честно говоря, разделение волос за миллисекунды не имеет значения, если вы не планируете добавлять в свой массив сотни тысяч строк.Изменить : запустить этот код:
Использование первого метода
$array[]
почти на 50% быстрее второго.Некоторые результаты тестов:
Это не должно вызывать удивления, поскольку в руководстве по PHP это отмечается:
Я не удивлюсь, как это сформулировано
array_push
более эффективно при добавлении нескольких значений. РЕДАКТИРОВАТЬ : Из любопытства провел дополнительное тестирование, и даже для большого количества добавлений отдельные$array[]
вызовы выполняются быстрее, чем один большойarray_push
. Интересный.источник
$array[]
выводам , я подтвердил, что это действительно намного быстрее, 300 мс против 2000 мс для 1M назначений на моей машине. Однако одновременное добавление 20 элементов в array_push заняло примерно 20$array[] =
секунд.Основное использование array_push () заключается в том, что вы можете поместить несколько значений в конец массива.
Он говорит , что в документации :
источник
Из документации php для
array_push
:источник
Ходят слухи, что [] быстрее, потому что нет накладных расходов на вызов функции. Кроме того, никому не нравятся функции массива PHP ...
"Это ... стог сена, иголка .... или это стог сена иголки ... а, к черту ... [] ="
источник
Одно отличие состоит в том, что вы можете вызывать array_push () с более чем двумя параметрами, то есть вы можете помещать в массив более одного элемента за раз.
печать
1,2,3,4
источник
Простое объявление $ myarray [] будет быстрее, так как вы просто помещаете элемент в стек элементов из-за отсутствия накладных расходов, которые может принести функция.
источник
Поскольку array_push - это функция, которая вызывается несколько раз, когда находится внутри цикла, она выделяет память в стеке. Но когда мы используем $ array [] = $ value, мы просто присваиваем значение массиву.
источник
Второй - это вызов функции, поэтому обычно он должен быть медленнее, чем использование основных функций доступа к массиву. Но я думаю, что даже один запрос к базе данных в вашем скрипте перевесит 1.000.000 обращений к
array_push()
.источник
Хотя вопрос больше касался производительности, люди будут задавать этот вопрос, задаваясь вопросом, стоит ли использовать
array_push
или$arr[]
.Функция может означать меньшие строки для нескольких значений:
Тем не менее ,
array_push
...Я буду придерживаться
$arr[]
.источник
Я просто не хочу добавлять:
int array_push(...)
вернуть новое количество элементов в массиве ( php doc ). который может быть полезнее и компактнее, чем$myArray[] = ...; $total = count($myArray);
.Также
array_push(...)
имеет смысл, когда переменная используется в качестве стека.источник