Как добавить элементы в пустой массив в PHP?

317

Если я определяю массив в PHP, например (не определяю его размер):

$cart = array();

Я просто добавляю к нему элементы, используя следующее?

$cart[] = 13;
$cart[] = "foo";
$cart[] = obj;

Не массивы в PHP имеют метод добавления, например cart.add(13)?

Теги:
arrays
variables

7 ответов

542
Лучший ответ

Оба array_push и метод, который вы описали, будет работать.

<?php
$cart = array();
$cart[] = 13;
$cart[] = 14;
// etc
?>

То же, что и:

<?php
$cart = array();
array_push($cart, 13);
array_push($cart, 14);

// Or 
$cart = array();
array_push($cart, 13, 14);
?>
  • 160
    Как указано в документации PHP, если вы нажимаете только один элемент каждый раз (как в цикле) или один элемент один раз, лучше использовать метод $cart[] = 13 не только потому, что для этого нужно меньше символов та же операция, но она также не накладывает накладных расходов на производительность при вызове функции, как это делает array_push (). Редактировать: Но отличный ответ. Фактически то же самое, и большинство пользователей даже не заметят разницы в производительности, но помогут узнать эти нюансы.
  • 55
    Это только я, или синтаксис $cart[]=... , на первый взгляд, выглядит как присваивание переменной, а не как неявный array_push?
Показать ещё 9 комментариев
49

Лучше не использовать array_push и просто использовать то, что вы предложили. Функции просто добавляют служебные данные.

//We don't need to define the array, but in many cases it the best solution.
$cart = array();

//Automatic new integer key higher than the highest 
//existing integer key in the array, starts at 0.
$cart[] = 13;
$cart[] = 'text';

//Numeric key
$cart[4] = $object;

//Text key (assoc)
$cart['key'] = 'test';
  • 10
    «Если вы добавляете несколько значений в массив в цикле, использовать array_push быстрее, чем повторяющиеся [] = инструкции» php.net/manual/en/function.array-push.php#84959
  • 2
    Абсолютно правильно, если ваш сценарий использования добавляет один элемент или элементы по одному. Если все значения известны одновременно, то, вероятно, лучше всего использовать нотацию array_push в зависимости от того, сколько элементов необходимо добавить, дополнительные символы от повторного ввода имени массива каждый раз могут быть больше помехой производительности, чем вызовом функции. над головкой. Как всегда, суждение должно осуществляться при выборе. Хорошие ответы!
Показать ещё 1 комментарий
7

Основываясь на моем опыте, ваше решение отлично (лучше), когда ключи не важны:

$cart = array();
$cart[] = 13;
$cart[] = "foo";
$cart[] = obj;
5

Вы можете использовать array_push. Он добавляет элементы в конец массива, как в стеке.

Вы также могли бы сделать это следующим образом:

$cart = array(13, "foo", $obj);
2

ПОМНИТЕ, этот метод перезаписывает первый массив, поэтому используйте только тогда, когда вы уверены!

$arr1 = $arr1 + $arr2;

(см. источник)

  • 1
    Почему отрицание, кто-то может объяснить, почему это плохо? это небезопасно?
  • 2
    @ SandyBeach, это не ответ
0

Когда вы хотите добавить элементы с нулевым индексированием элемента, я думаю, это тоже будет работать:

// adding elements to an array with zero-based index
$matrix= array();
$matrix[count($matrix)]= 'element 1';
$matrix[count($matrix)]= 'element 2';
...
$matrix[count($matrix)]= 'element N';
-1

Он называется array_push: http://il.php.net/function.array-push

  • 2
    Ответы со ссылками бесполезны, если они также не указывают соответствующие данные в случае исчезновения связанной страницы.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню