Что лучше использовать в 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(...)
имеет смысл, когда переменная используется как стек.