1

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?

6
  • 3
    "Now I learned that the [] notation for arrays does not work in older versions of PHP, like PHP 5.2." not correct Commented Aug 20, 2015 at 1:33
  • I'm voting to close this question as off-topic because its base assertion is incorrect Commented Aug 20, 2015 at 1:35
  • hm, I ran into problems with [] in 5.2 and found this entry that made sense to me stackoverflow.com/a/5966855/3097469 Commented Aug 20, 2015 at 1:36
  • 2
    @grueb You might be confusing $array = [], which declares an array and is not supported in older versions of php with $array[] = $something, which appends an element to the array and is supported in all versions of php Commented Aug 20, 2015 at 1:37
  • 2
    The short array syntax ($array = []) was introduced on PHP 5.4 Commented Aug 20, 2015 at 1:40

2 Answers 2

3

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.

Sign up to request clarification or add additional context in comments.

1 Comment

great, thank you! I had $array = []; in my original code ... but got confused / made a pasting error (corrected it in the original post) ... but now I understand that this was the problem and not $array["error"][] = .... Thank You!
1

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']";

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.