ID:               31956
 Updated by:       [EMAIL PROTECTED]
 Reported By:      pillepop2003 at yahoo dot de
-Status:           Open
+Status:           Bogus
 Bug Type:         Scripting Engine problem
 Operating System: *
 PHP Version:      4CVS, 5CVS (2005-02-13)
 New Comment:

Don't mix my example with yours, mine is passing something else than an
array index to the function. And this is actually (kind of) documented
as undefined:

http://www.php.net/manual/en/language.references.pass.php

See the last paragraph, about what can be passed by reference:

"Any other expression should not be passed by reference, as the result
is undefined."



Previous Comments:
------------------------------------------------------------------------

[2005-02-13 20:29:19] pillepop2003 at yahoo dot de

<?php

function func1(&$a)
{
    // void();
}

var_dump($c);
func1($c);
var_dump($c);

?> 

should IMO output

array(2) {
                ["one"]=>
                int(1)
        }
array(2) {
                ["one"]=>
                int(1)
        }

Why should the non-existing variable get a value (of NULL) - this is a
paradoxon, isn't it? Can't it just be "not mentioned"?

------------------------------------------------------------------------

[2005-02-13 18:14:24] [EMAIL PROTECTED]

What would you expect this to output:

<?php

function func1(&$a)
{
    // void();
}

var_dump($c);
func1($c);
var_dump($c);

?>  

IMO, this is exactly what you'd expect. The non-existing variable (or
in your example, non-existing array index) gets 
value of NULL. I don't see what else should happen..



------------------------------------------------------------------------

[2005-02-13 17:57:31] [EMAIL PROTECTED]

This happens with both PHP_4_3 and HEAD from today.
(only verified that it happens. I don't know if it's intentional or not
:)


------------------------------------------------------------------------

[2005-02-13 17:27:23] pillepop2003 at yahoo dot de

Description:
------------
Bug #26030 realtes to the same problem and should be reopened: Why? It
seems to be *NOT* related to #25996, as formerly reported by
[EMAIL PROTECTED], which was the reason to close it.

Problem:
If a part of an array, that does not yet exist, is passed to a function
by reference, this part will be created automatically and filled with
NULL.

As long as no there is no function implemented to delete the NULL entry
(unset does not work), this behavior cannot be correct.

Please see my example - it clearly states that the behavior is
incorrect.

Reproduce code:
---------------
See why:
The following behavior *cannot* be intentional:

<?php
        function func(&$a)
        {
                // void();
        }
        
        $a['one'] =1;
        func($a['two']);
?>      

var_dump($a) returns

        array(2) {
                ["one"]=>
                int(1)
                ["two"]=>
                NULL
        }

Expected result:
----------------
array(2) {
                ["one"]=>
                int(1)
        }

Actual result:
--------------
array(2) {
                ["one"]=>
                int(1)
                ["two"]=>
                NULL
        }


------------------------------------------------------------------------


-- 
Edit this bug report at http://bugs.php.net/?id=31956&edit=1

Reply via email to