Как добавлять в массив php?
PHP 8, здравствуйте, список из 3 товаров и четвертый получаю отдельно, через плюс почему то не добавилось, еще надо положить цену по имени поля.
Пока нет лидеров с лучшими ответами.
Ваш вопрос
PHP 8, здравствуйте, список из 3 товаров и четвертый получаю отдельно, через плюс почему то не добавилось, еще надо положить цену по имени поля.
Для четвёртого товара используйте $items[] = $newItem;. PHP выберет следующий числовой индекс. Для именованного поля подойдёт $row['price'] = 150;; если поле уже существует, его значение изменится.
Пример:
$items = ['A', 'B', 'C'];
$items[] = 'D';
$row = ['name' => 'A'];
$row['price'] = 150;
Плюс между массивами выполняет объединение по индексам. Если у обеих сторон есть индекс 0, значение справа с этим индексом не добавится поверх левого. Для объединения списков можно использовать предназначенные для этого операции, учитывая поведение числовых и строковых индексов. Добавление одного массива через [] создаёт вложенность, а не разворачивает все его элементы.
$items[] = $item;.$row['price'] = $price;.+ объединяет массивы с сохранением значений левой стороны при совпадении индексов, поэтому он не равен добавлению в конец.[], он станет одним вложенным элементом.Пока нет премиум-вопросов в подборке
Не нашли то, что искали?
Задайте свой вопрос
Лучший ответ
v4-flash
v4-flash
Как добавлять в массив php?
Один новый элемент
Самая понятная запись для вашего списка —
$items[] = $newItem;. Она добавляет одно значение с автоматически выбранным числовым индексом. Это значение может быть строкой, числом, объектом или даже другим массивом. Тип добавляемого значения сам по себе не заставляет PHP разворачивать его содержимое.Именованное поле
Для цены используйте
$row['price'] = $price;. Здесь вы выбираете индекс явно. Если такого поля ещё не было, оно появится. Если уже было, прежнее значение заменится. Поэтому добавление нового поля и обновление существующего выражаются одинаковой формой записи, а результат зависит от содержимого массива.Почему плюс не сработал
Оператор
+для массивов означает объединение с сохранением элементов слева при совпадающих индексах. Два простых списка часто оба начинаются с индекса 0. В такой ситуации первый элемент правого списка не станет автоматически следующим элементом левого, и ожидаемого увеличения может не произойти.Несколько значений
Если нужно добавить несколько отдельных элементов, можно последовательно использовать
[]либо подходящую функцию. При объединении массивов заранее решите, требуется ли переиндексация числовых элементов и что делать с совпадающими строковыми именами. Разные операции дают разные результаты, поэтому выбор должен соответствовать структуре данных.Проверка структуры
Перед добавлением убедитесь, что переменная содержит массив, особенно если она получена из другого участка программы. После операции посмотрите результат отладочным средством. Отдельно проверьте случай, когда новый товар сам представлен массивом: добавление такого товара в список обычно и должно создавать вложенный элемент с его полями, а не смешивать поля товара с общим списком.