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

StackOverflow https://stackoverflow.com/questions/351017

  •  20-08-2019
  •  | 
  •  

Вопрос

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

$myArray = array('my message');

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

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

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

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

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

Это было полезно?

Решение

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

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

array_push($myArray, 'my message');

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

Здесь:

$myArray[] = 'my message';

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

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

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

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

Способ OIS сработает.

Или

if (!isset($myArray)) 
    $myArray=array();
array_push($myArray, 'message');
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top