Php: отправка в массив, который может существовать или не существовать

Я хочу создать массив с сообщением.

$myArray = array('my message');

Но с использованием этого кода myArray будет перезаписан, если он уже существует.

Если я использую array_push, он должен уже существовать.

$myArray = array(); // <-- has to be declared first.
array_push($myArray, 'my message');

В противном случае он треснет.

Есть ли способ заставить второй приведенный выше пример работать без предварительной очистки $myArray = array();?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
12
0
12 293
5
Перейти к ответу Данный вопрос помечен как решенный

Ответы 5

Здесь:

$myArray[] = 'my message';

$ myArray должен быть массивом или не задан. Если он содержит значение, которое является строкой, целым числом или объектом, который не реализует доступ к массиву, он завершится ошибкой.

Это странно, но это правда. PHP не будет вызывать никаких ошибок / предупреждений / уведомлений по этому поводу.

troelskn 09.12.2008 00:46

... невероятно полезная функция (по крайней мере, для меня)

da5id 09.12.2008 00:50
Ответ принят как подходящий

Сначала проверьте, существует ли массив, а если нет, создайте его ... затем добавьте элемент, зная, что массив обязательно будет определен заранее:

if (!isset($myArray)) {
    $myArray = array();
}

array_push($myArray, 'my message');

оснастка ... кроме нового бита, который, я думаю, не работает в php

benlumley 09.12.2008 00:49

хе да ... вот что происходит, когда у вас в голове бродит слишком много языков :-)

Andreas Grech 09.12.2008 00:51
if ($myArray) {
  array_push($myArray, 'my message');
}
else {
  $myArray = array('my message');
}

Вы должны проверить, содержит ли var массив с isset и is_array.

OIS 09.12.2008 00:51

Почему а также? is_array () должно быть достаточно. Вряд ли это может быть массив, если он не задан.

Tomalak 09.12.2008 01:07

Да, моя плохая формулировка. Я имел в виду то же самое. Надо было использовать или.

OIS 09.12.2008 01:10

Способ OIS будет работать.

Или же

if (!isset($myArray)) 
    $myArray=array();
array_push($myArray, 'message');

Вы должны использовать is_array (), а не isset. Полезно, если myArray устанавливается из функции, которая возвращает массив или строку (например, -1 при ошибке)

Это предотвратит ошибки, если myArray объявлен как не массив в другом месте.

if (is_array($myArray))
{
   array_push($myArray,'my message');
}
else
{
   $myArray = array("my message");
}

Вы правильно упомянули is_array, но используете несуществующую функцию array_exists.

OIS 09.12.2008 01:00

Дох! TCL мешал: P

Byron Whitlock 09.12.2008 01:20

Другие вопросы по теме