Как добавить элементы в пустой массив в PHP?
Два основных способа добавления элементов в массив
В PHP есть два основных способа добавить элемент в конец массива. Оба корректны, но между ними есть нюансы.
1. Оператор квадратные скобки $array[] = $value
Это самый простой и рекомендуемый способ для добавления одного элемента. PHP автоматически присваивает новый числовой ключ (на единицу больше максимального существующего ключа).
// Создание пустого массива
$fruits = [];
// Добавление элементов
$fruits[] = 'apple';
$fruits[] = 'banana';
$fruits[] = 'orange';
print_r($fruits);
// Результат:
// Array ( [0] => apple [1] => banana [2] => orange )
Почему это часто лучший выбор:
- Короче и читаемее — сразу видно, что элемент добавляется
- Нет лишнего вызова функции — чуть быстрее работает
- Идеально для циклов и динамического наполнения
2. Функция array_push()
Позволяет добавить сразу несколько элементов. Полезна, когда нужно добавить много значений одной строкой.
$colors = ['red', 'green'];
// Добавление одного элемента
array_push($colors, 'blue');
// Добавление нескольких элементов
array_push($colors, 'yellow', 'purple', 'cyan');
print_r($colors);
// Array ( [0] => red [1] => green [2] => blue [3] => yellow [4] => purple [5] => cyan )
Когда использовать:
- Когда нужно добавить 2+ элемента за раз
- В функциональном стиле программирования (цепочки вызовов)
- Когда массив передаётся по ссылке в другую функцию
Добавление в начало массива
Если нужно вставить элемент в начало, используйте array_unshift(). Она сдвигает все существующие элементы вправо.
$queue = ['second', 'third'];
array_unshift($queue, 'first');
print_r($queue);
// Array ( [0] => first [1] => second [2] => third )
Добавление с указанием ключа
Если вам нужен конкретный ключ (не числовой), просто присвойте значение:
$user = [];
$user['name'] = 'Иван';
$user['age'] = 30;
$user['email'] = 'ivan@example.com';
Решение вашей задачи с товарами
Вот как должен выглядеть ваш код:
$filtered_items = []; // современный синтаксис вместо array()
foreach ($items as $item) {
if ($item['price'] > 100) {
$filtered_items[] = $item; // самый простой и быстрый способ
}
}
Производительность и лучшие практики
- Скорость:
$array[]немного быстрееarray_push()для одного элемента, потому что нет накладных расходов на вызов функции - Читаемость:
$array[] = $valueинтуитивно понятнее — это как "добавить в массив" - Инициализация: Всегда используйте
$array = []вместо$array = array()— это короче и современнее (PHP 5.4+) - Проверка на пустоту: Если массив ещё не объявлен, используйте
$array[] = $value— PHP сам создаст массив (но лучше объявлять явно для ясности)
В итоге: для вашей задачи с товарами идеально подходит $filtered_items[] = $item внутри цикла. Просто, быстро и понятно.
Альтернативный подход: использование array_push с переменным числом аргументов
Иногда полезно знать, что array_push() можно комбинировать с распаковкой массива (оператор ... в PHP 5.6+). Это удобно, когда у вас есть готовый массив элементов, которые нужно добавить.
$existing = [1, 2, 3];
$new_items = [4, 5, 6];
// Добавление всех элементов из $new_items в $existing
array_push($existing, ...$new_items);
print_r($existing);
// Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 [5] => 6 )
Это эквивалентно:
foreach ($new_items as $item) {
$existing[] = $item;
}
Важное предостережение
Не пытайтесь использовать array_push() в цикле для добавления одного элемента — это избыточно. Сравните:
// Плохо (лишний вызов функции на каждой итерации)
foreach ($data as $d) {
array_push($result, $d);
}
// Хорошо (минимальный синтаксис)
foreach ($data as $d) {
$result[] = $d;
}
Также помните, что array_push() возвращает новое количество элементов в массиве, а не сам массив. Это может пригодиться для проверок:
$count = array_push($arr, 'new');
echo "Теперь в массиве $count элементов";
В целом, для 90% случаев используйте $array[] = $value. Это стандарт де-факто в современном PHP.
Ответов пока нет.
Войдите чтобы оставить ответ