|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
[2005-02-13 17:27 UTC] 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 bugmoriyoshi@php.net, 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 } PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
|
|||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Wed Dec 03 04:00:02 2025 UTC |
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..<?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"?