Как добавить элементы в пустой массив в PHP?
Я столкнулся с проблемой в PHP, связанной с определением и использованием массивов. Когда я создаю массив, например, следующим образом (не указывая его размер):
$cart = array();
Могу ли я просто добавлять элементы в него, используя следующий синтаксис?
$cart[] = 13;
$cart[] = "foo";
$cart[] = obj;
Также меня интересует, есть ли в PHP метод для добавления элементов в массив, например, что-то вроде cart.add(13)
? Почему в PHP используется такая конструкция для добавления элементов в массивы?
4 ответ(ов)
На основе моего опыта, подход, который будет хорош (даже лучший), когда ключи не важны, выглядит следующим образом:
$cart = [];
$cart[] = 13;
$cart[] = "foo";
$cart[] = $obj;
В этом примере элементы добавляются в массив $cart
без указания ключей. Это позволяет PHP автоматически присваивать индекс (ключ) для каждого элемента, что делает код более чистым и удобным, если порядок элементов и сами значения важнее ключей.
В вашем коде происходит следующее:
- Вы создаете массив
$cart
и добавляете в него значения 11 и 15. Это выполняется правильно. - Далее, в цикле
for
вы инициализируете массив$cart
снова, и затем добавляете в него значения от 0 до 5.
Ключевой момент, который вы упомянули, заключается в том, что если вы вместо $cart[] = $i;
напишете $cart = [$i];
, то это приведет к тому, что массив будет перезаписываться на каждой итерации цикла. В итоге в массиве останется только последнее значение $i
, то есть 5, так как на каждой итерации вы инициализируете $cart
заново.
Вот скорректированный код с комментариями для ясности:
$cart = array();
for($i = 0; $i <= 5; $i++){
$cart[] = $i; // добавляем текущее $i в массив $cart
// Если заменить на $cart = [$i];, массив будет содержать только последнее значение $i
}
echo "<pre>";
print_r($cart); // выводим массив
echo "</pre>";
Таким образом, ваш массив $cart
в результате будет содержать значения от 0 до 5, как и ожидалось.
В приведённом вами коде на PHP создаётся и выводится массив с информацией о пассажирах, а также массив стран с их кодами и телефонными номерами.
В первой части кода создаётся ассоциативный массив $products_arr
, в который добавляется массив с именем и электронной почтой пассажира. После этого массив выводится в виде JSON с отступами для удобства чтения.
$products_arr["passenger_details"] = array();
array_push($products_arr["passenger_details"], array("Name" => "Isuru Eshan", "E-Mail" => "[email protected]"));
echo "<pre>";
echo json_encode($products_arr, JSON_PRETTY_PRINT);
echo "</pre>";
Во второй части кода создаётся массив стран $countries
с информацией о кодах и названиях стран. Затем с помощью цикла foreach
происходит вывод информации о каждой стране.
$countries = array();
$countries["DK"] = array("code" => "DK", "name" => "Denmark", "d_code" => "+45");
$countries["DJ"] = array("code" => "DJ", "name" => "Djibouti", "d_code" => "+253");
$countries["DM"] = array("code" => "DM", "name" => "Dominica", "d_code" => "+1");
foreach ($countries as $country) {
echo "<pre>";
echo print_r($country);
echo "</pre>";
}
Этот код правильно создаёт и отображает как пассажирские данные, так и информацию о странах. Если у вас есть конкретный вопрос или требуется доработка, пожалуйста, уточните!
Чтобы добавить элемент в ассоциативный массив на PHP, используйте следующий синтаксис:
// Добавляем элемент в массив
$countries["continent"] = "Europe";
В этом примере "continent"
— это ключ, а "Europe"
— значение, которое вы хотите ассоциировать с этим ключом. После выполнения этой строки в массиве $countries
будет содержаться новая пара ключ-значение.
Как проверить, является ли переменная массивом в JavaScript?
Сортировка двумерного массива по значению в столбце
Можно ли привязать массив к условию IN() в запросе PDO?
Вставка нового элемента в массив в любом месте в PHP
Сортировка массива объектов по одному свойству