最好的方法是在PHP 5.2中将命名数组附加到数组

I got used to this notation for creating empty arrays and add named elements to them when needed;

$array = [];

// in case there is an error
$array["error"][] = "new error message as element 0 of $array['error']";

Now I learned that the [] notation for arrays does not work in older versions of PHP, like PHP 5.2.

Instead I have to do;

$array = array(
  "error" => array()
);

array_push($array["error"], "new error message as element 0 of $array['error']");

This way is a little bit inconvenient in my case because the great thing about the first code snippet is that the "error" entry in $array is only created when there is an actual error, whereas in the latter case the entry (although empty) exists either way.

Is there a way to get similar 'functionality' (i.e. specifying/adding named elements when needed, not at initialisation) in a way that is also easily readable in PHP 5.2?

EDIT: The first code snippet in the original post was reading $array = array[];. The author corrected it after I posted this answer.


The first code snipped is incorrect. There is no such thing as array[]. The correct syntax is array().

$array = array();

// in case there is an error
$array["error"][] = "new error message as element 0 of $array['error']";

You don't have to worry about PHP versions. This syntax always worked on PHP since its dawn and it will probably work forever. Keep using it.

The first way of creating array in PHP is incorrect. This syntax works in PHP5.2 below too, so you dont need to worry about it. You don't need to use array_push and simply do following.

The correct syntax is:

$array = array(); // notice it doesn't to array[]

// add error when there is one
$array["error"][] = "new error message as element 0 of $array['error']";