Что лучше использовать в PHP $array[] = $value или Array push ($array, $value)?
что лучше использовать в PHP для добавления элемента массива $array[] = $value
или array_push($array, $value)
?
хотя в руководстве говорится, что вам лучше избегать вызова функции, я также прочитал $array[]
гораздо медленнее, чем array_push()
. У кого-нибудь есть какие-либо разъяснения или ориентиры?
10 ответов:
никаких ориентиров, но я лично чувствую себя как
$array[]
чище смотреть, и честно расщепление волос за миллисекунды довольно неуместно, если вы не планируете добавлять сотни тысяч строк в свой массив.Edit: прогнал этот код:
$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[] = потому что таким образом нет накладных расходов на вызов функция.
Примечание: Если вы используете array_push() для добавления одного элемента в массив, лучше использовать $array []=, потому что таким образом нет накладных расходов на вызов функции.
слово на улице, что [ ... ] быстрее, потому что нет накладных расходов на вызов функции. Кроме того, никто не любит функции массива PHP...
"Это...стог сена, иголка....или это игольчатый стог сена...Ах, черт возьми...[] ="
одно отличие заключается в том, что вы можете вызвать array_push() с более чем двумя параметрами, т. е. вы можете одновременно нажимать более одного элемента в массив.
$myArray = array(); array_push($myArray, 1,2,3,4); echo join(',', $myArray);
печать
1,2,3,4
простое объявление $myarray[] будет быстрее, поскольку вы просто нажимаете элемент на стек элементов из-за отсутствия накладных расходов, которые принесет функция.
с "array_push " - это функция, и она вызывается несколько раз, когда она находится внутри цикла, поэтому она выделит память в стек. Но когда мы используем $array[] = $value, то мы просто присваиваем значение массиву.
второй-это вызов функции, поэтому обычно он должен быть медленнее, чем использование основных функций доступа к массиву. Но я думаю, что даже один запрос базы данных в вашем скрипте будет перевешивать 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);
.и
array_push(...)
имеет смысл, когда переменная используется в качестве стека.