php: отправка в массив, который может существовать или не существовать - PullRequest
10 голосов
/ 09 декабря 2008

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

$myArray = array('my message');

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

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

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

В противном случае, оно будет мигать.

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

Ответы [ 5 ]

30 голосов
/ 09 декабря 2008

Здесь:

$myArray[] = 'my message';

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

7 голосов
/ 09 декабря 2008

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

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

array_push($myArray, 'my message');
3 голосов
/ 09 декабря 2008

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

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

if(is_array($myArray))
{
   array_push($myArray,'my message');
}
else
{
   $myArray = array("my message");
}
0 голосов
/ 09 декабря 2008

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

Или

if (!isset($myArray)) 
    $myArray=array();
array_push($myArray, 'message');
0 голосов
/ 09 декабря 2008
if ($myArray) {
  array_push($myArray, 'my message');
}
else {
  $myArray = array('my message');
}
...