В руководстве по PHP ( array_push ) сказано ..
Если вы используете array_push () для добавления одного элемента в массив, лучше использовать $ array [] =, потому что в этом случае нет накладных расходов на вызов функции.
Например :
$arr = array();
array_push($arr, "stackoverflow");
print_r($arr);
против
$arr[] = "stackoverflow";
print_r($arr);
Я не понимаю, почему такая большая разница.
Ответы:
Когда вы вызываете функцию в PHP (например,
array_push()
), есть накладные расходы на вызов, так как PHP должен искать ссылку на функцию, находить ее положение в памяти и выполнять любой код, который он определяет.Использование
$arr[] = 'some value';
не требует вызова функции и реализует добавление прямо в структуру данных. Таким образом, при добавлении большого количества данных их использовать намного быстрее и эффективнее$arr[]
.источник
$arr[] = value
это быстрее? Пытаемся представить, почему компилятор по-другому трактует код.Вы можете добавить более 1 элемента за один снимок в массив с помощью array_push,
например
array_push($array_name, $element1, $element2,...)
Где $ element1, $ element2, ... - элементы, которые нужно добавить в массив.
Но если вы хотите добавить только один элемент за раз, тогда предпочтительнее использовать другой метод (например, с использованием $ array_name []).
источник
Разница в строке ниже: «потому что таким образом нет накладных расходов на вызов функции».
источник
Вы должны всегда использовать,
$array[]
если это возможно, потому что, как указано в поле, нет накладных расходов на вызов функции. Таким образом, это немного быстрее, чем вызов функции.источник
array_push - один или несколько элементов в конец массива
Обратите внимание на слова « один или несколько элементов в конце », чтобы сделать это,
$arr[]
вам нужно будет получить максимальный размер массива.источник
$arr[...index...] = $value;
что здесь обсуждается, а именно$arr[] = $value;
. Не нужно знать размер или массив, чтобы надавить на конец. Несколько элементов будут просто несколько вызовов:$arr[] = $value1; $arr[] = $value2; $arr[] = $value3;
Объясните: 1. первый объявляет переменную в массиве.
2. второй метод array_push используется для вставки строки в переменную массива.
3. наконец, он напечатает результат.
4. второй метод - напрямую сохранить строку в массиве.
5. данные печатаются в значениях массива с использованием метода print_r.
эти двое такие же
источник
оба одинаковы, но array_push создает цикл в своем параметре, который является массивом, и выполняет $ array [] = $ element
источник
Я знаю, что это старый ответ, но другим может быть полезно знать, что еще одно различие между ними заключается в том, что если вам нужно добавить более 2/3 значений на цикл в массив, это будет быстрее использовать:
вместо того:
edit - Забыл закрыть скобку для
for
условногоисточник
for(...){ $arr = $arr + [$i, $i*2, $i*3, $i*4, ...] }
. Я предполагаю, что array_push все еще немного быстрее.Никто не сказал, но array_push только помещает элемент в КОНЕЦ МАССИВА, где $ array [index] может вставить значение по любому заданному индексу. Большая разница.
источник
$array[index] =
, что является другой операцией , чем$array[] = ...
. Вопрос дает два фрагмента кода и спрашивает, почему между ними может быть значительная разница [в производительности] . Вопрос буквально означает$array[] = ...
, что это конкретная идиома php, не связанная с индексом. array + index решает другую проблему, дает другой код и представляет собой другой компромисс.