Что лучше использовать в PHP $ array = $ value или array_push ($ array, $ value)?

Что лучше использовать в PHP для добавления члена массива $array[] = $value или array_push($array, $value) ?

Хотя в руководстве говорится, что вам лучше избегать вызова функции, я также прочитал $array[] намного медленнее, чем array_push() . Кто-нибудь имеет какие-либо разъяснения или контрольные показатели?

Нет контрольных показателей, но я лично чувствую, что $array[] чище смотреть, и честно расщепляя волосы за миллисекунды, не имеет никакого значения, если вы не планируете добавлять сотни тысяч строк в свой массив.

Изменить : Ran этот код:

 $t = microtime(true); $array = array(); for($i = 0; $i < 10000; $i++) { $array[] = $i; } print microtime(true) - $t; print '<br>'; $t = microtime(true); $array = array(); for($i = 0; $i < 10000; $i++) { array_push($array, $i); } print microtime(true) - $t; 

Первый метод с использованием $array[] почти на 50% быстрее, чем второй.

Некоторые контрольные результаты:

 Run 1 0.0054171085357666 // array_push 0.0028800964355469 // array[] Run 2 0.0054559707641602 // array_push 0.002892017364502 // array[] Run 3 0.0055501461029053 // array_push 0.0028610229492188 // array[] 

Это не должно удивлять, поскольку в руководстве PHP это делается:

Если вы используете array_push () для добавления одного элемента в массив, лучше использовать $ array [] =, потому что таким образом нет накладных расходов на вызов функции.

Как это сформулировано Я бы не удивился, если array_push более эффективен при добавлении нескольких значений. EDIT : Из любопытства, сделал некоторые дополнительные тесты и даже для большого количества дополнений, отдельные вызовы $array[] быстрее, чем один большой array_push . Интересно.

Основное использование array_push () состоит в том, что вы можете нажать несколько значений в конец массива.

В документации говорится:

Если вы используете array_push () для добавления одного элемента в массив, лучше использовать $ array [] =, потому что таким образом нет накладных расходов на вызов функции.

Из php docs для array_push :

Примечание. Если вы используете array_push () для добавления одного элемента в массив, лучше использовать $ array [] =, потому что таким образом нет накладных расходов на вызов функции.

Слово на улице – это то, что [] быстрее, потому что накладные расходы для вызова функции. Кроме того, никто не любит функции массива PHP …

«Это … стога сена, игла …. или это игольная сена … ах, f *** это … [] ="

Одно из отличий заключается в том, что вы можете вызывать array_push () с более чем двумя параметрами, то есть вы можете нажимать на массив несколько элементов за один раз.

 $myArray = array(); array_push($myArray, 1,2,3,4); echo join(',', $myArray); 

отпечатки 1,2,3,4

Простая декларация $ myarray [] будет быстрее, поскольку вы просто нажимаете элемент на стек элементов из-за отсутствия накладных расходов, которые могла бы принести функция.

Поскольку « array_push » – это функция, и она вызывается несколько раз, когда она находится внутри цикла, поэтому она выделяет память в стек. Но когда мы используем $ array [] = $ value, мы просто присваиваем значение массиву.

Второй – вызов функции, поэтому, как правило, он должен быть медленнее, чем использование основных функций доступа к массиву. Но я думаю, что даже один запрос к базе данных в вашем скрипте будет array_push() 1.000.000 вызовов array_push() .

Хотя вопрос был больше о производительности, люди придут к этому вопросу, задаваясь вопросом, стоит ли использовать array_push или $arr[] .

Функция может означать меньшие линии для нескольких значений:

 // 1 line: array_push($arr, "Bob", "Steve"); // versus 2 lines: $arr[] = "Bob"; $arr[] = "Steve"; 

Однако array_push

  • не могут получать ключи массива
  • нарушает соглашение об иглах / сенах
  • медленнее, как уже обсуждалось

Я буду придерживаться $arr[] .

Я просто не хочу добавлять: int array_push(...) возвращает новое число элементов в массиве ( php doc ). который может быть полезным и более компактным, чем $myArray[] = ...; $total = count($myArray); $myArray[] = ...; $total = count($myArray); ,

Также array_push(...) имеет смысл, когда переменная используется как стек.