#34124 [Bgs]: array_push() fails when the array doesn't exist
| From: | ondrej at sury dot org | Date: | Sat, 13 Aug 2005 13:31:51 +0000 |
| Subject: | #34124 [Bgs]: array_push() fails when the array doesn't exist | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-83533@lists.php.net to get a copy of this message | ||
ID: 34124
User updated by: ondrej at sury dot org
Reported By: ondrej at sury dot org
Status: Bogus
Bug Type: Arrays related
Operating System: Linux
PHP Version: 5.0.4
New Comment:
As I stated in original bug report, it could be just lack of note in
docs.
I guess that problem original submitter had was, that it's pretty
normal that variables in PHP can be used without initialization, it
prints WARNING, but in the end it works as expected. Also
documentation states that array_push has same effect as $array[] =
$var, which is not true, because [] statement creates array.
So I guess simple adding:
"NOTE: array_push will not create array when called with non-array
argument."
to docs won't hurt. And it could avoid confusion on user side.
Previous Comments:
------------------------------------------------------------------------
[2005-08-13 15:19:28] tony2001@php.net
Ever tried to set display_errors to On and error_reporting to E_ALL ?
This is what your code outputs.:
Warning: array_push(): First argument should be an array in ..
I don't see any bugs here.
------------------------------------------------------------------------
[2005-08-13 15:14:15] ondrej at sury dot org
Description:
------------
From http://bugs.debian.org/289244:
array_push will not create new array when called with arg which is not
array type (or nonexistant).
This could be just documentation error to state, that new array won't
be created inside array_push().
I am not sure that there is easy fix inside PHP, since array parameter
in array_push is reference and not value. So it looks like that it
gets created inside array_push, but discarded (or leaked?) afterwards.
Reproduce code:
---------------
<?php
array_push ($foo, 1, 2, 3);
print ("bar $foo[0] baz\n");
?>
Expected result:
----------------
bar 1 baz
Actual result:
--------------
bar baz
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=34124&edit=1