Что лучше использовать в PHP $array [] = $value или array_push ($ array, $value)?
Что лучше использовать в PHP для добавления члена массива $array[] = $value
или array_push($array, $value)
?
Хотя в руководстве говорится, что вам лучше избегать вызова функции, я также читал $array[]
намного медленнее, чем array_push()
. Кто-нибудь имеет какие-либо разъяснения или тесты?
Ответы
Ответ 1
Нет контрольных показателей, но я лично чувствую, что $array[]
чище смотреть, и честно расщепляя волосы за миллисекунды довольно неважно, если вы не планируете добавлять сотни тысяч строк в свой массив.
Изменить. Отредактируйте этот код:
$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
более эффективен при добавлении нескольких значений. РЕДАКТИРОВАТЬ. Из любопытства, проводили некоторые дополнительные испытания и даже для большого количества дополнений, индивидуальные вызовы $array[]
выполнялись быстрее, чем один большой array_push
. Интересно.
Ответ 2
Основное использование array_push() состоит в том, что вы можете вывести несколько значений в конец массива.
В документации говорится:
Если вы используете array_push(), чтобы добавить один элемент в массив лучше используйте $array [] =, потому что таким образом нет накладных расходов на вызов функция.
Ответ 3
Из php docs для array_push
:
Примечание. Если вы используете array_push() для добавления одного элемента в массив, лучше использовать $array [] =, потому что таким образом нет накладных расходов на вызов функции.
Ответ 4
Слово на улице - это то, что [] быстрее, потому что накладные расходы для вызова функции. Кроме того, никто не любит функции массива PHP...
"Это... стога сена, игла.... или это игольная сена... ах, f *** это... [] ="
Ответ 5
Одно из отличий заключается в том, что вы можете вызвать array_push() с более чем двумя параметрами, то есть вы можете нажимать на несколько элементов по одному элементу за один раз.
$myArray = array();
array_push($myArray, 1,2,3,4);
echo join(',', $myArray);
печатает 1,2,3,4
Ответ 6
Простая декларация $myarray [] будет быстрее, поскольку вы просто нажимаете элемент на стек элементов из-за отсутствия накладных расходов, которые могла бы принести функция.
Ответ 7
Так как " array_push" является функцией, и она вызывается несколько раз, когда она находится внутри цикла, поэтому она выделяет память в стек.
Но когда мы используем $array [] = $value, мы просто присваиваем значение массиву.
Ответ 8
Второй - вызов функции, поэтому, как правило, он должен быть медленнее, чем использование основных функций доступа к массиву. Но я думаю, что даже один запрос к базе данных в вашем script будет иметь вес 1.000.000 вызовов array_push()
.
Ответ 9
Несмотря на то, что вопрос касался производительности, люди придут к этому вопросу, задаваясь вопросом, стоит ли использовать array_push
или $arr[]
.
Функция может означать меньшие строки для нескольких значений:
// 1 line:
array_push($arr, "Bob", "Steve");
// versus 2 lines:
$arr[] = "Bob";
$arr[] = "Steve";
Однако, array_push
...
- не может получить ключи массива
- нарушает соглашение об именах игл/сена.
- медленнее, как обсуждалось
Я буду придерживаться $arr[]
.
Ответ 10
Я просто не добавлю: int array_push(...)
return
новое число элементов в массиве (php doc). который может быть полезным и более компактным, чем $myArray[] = ...; $total = count($myArray);
.
Также array_push(...)
имеет смысл, когда переменная используется как стек.