php: pushing to an array that may or may not exist

2019-04-21 12:41发布

问题:

I want to create an array with a message.

$myArray = array('my message');

But using this code, myArray will get overwritten if it already existed.

If I use array_push, it has to already exist.

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

Otherwise, it will bink.

Is there a way to make the second example above work, without first clearing $myArray = array();?

回答1:

Check if the array exists first, and if it doesn't, create it...then add the element, knowing that the array will surely be defined before hand :

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

array_push($myArray, 'my message');


回答2:

Here:

$myArray[] = 'my message';

$myArray have to be an array or not set. If it holds a value which is a string, integer or object that doesn't implement arrayaccess, it will fail.



回答3:

You should use is_array(), not isset. Usefull if myArray is being set from a function that returns an array or a string (-1 on error for example)

This will prevent errors if myArray is declared as a not an array somewhere else.

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


回答4:

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


回答5:

OIS' way will work.

Or

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