ID: 28476 Updated by: [EMAIL PROTECTED] Reported By: nepto at platon dot sk -Status: Verified +Status: Bogus Bug Type: Arrays related Operating System: * PHP Version: 5CVS, 4CVS (2005-02-03) New Comment:
This is not a bug. Look careful that do you do. <?php $ar["key"] = "string"; $ar["key"]["syb-key"] = "string"; // this line is eqivalent to $ar["key"][0] = "s"; $ar["key"]["syb-key"] = "XXX"; var_dump($ar["key"]); // string(6) "Xtring" ?> All work as expected. Previous Comments: ------------------------------------------------------------------------ [2004-05-21 21:00:44] [EMAIL PROTECTED] Implicit array creation ONLY occurs if the target variable is either (A) not set, or (B) empty. In this case the target variable is already set to a non-blank string so it qualifies neither of those criteria. It seems to me like this should throw a notice since, as you state, the results are very much unexpected. =================================================================== RCS file: /repository/Zend/Attic/zend_execute.c,v retrieving revision 1.316.2.34 diff -u -r1.316.2.34 zend_execute.c --- Zend/zend_execute.c 1 Apr 2004 22:05:38 -0000 1.316.2.34 +++ Zend/zend_execute.c 21 May 2004 18:59:27 -0000 @@ -780,6 +780,9 @@ array_init(container); break; } + } else if ((container->type == IS_STRING || container->type == IS_BOOL) && + (type == BP_VAR_RW || type == BP_VAR_W)) { + zend_error(E_NOTICE, "Implicit array creation failed: Target variable contains non-empty string or boolean true value."); } switch (container->type) { While this is considered, I'd suggest explicitly initializing your arrays before pushing data onto them. ------------------------------------------------------------------------ [2004-05-21 20:10:16] nepto at platon dot sk Description: ------------ Transformation of string variable to array variable does not work as expected when prticular assignment is used. It can be also bug in the var_dump(), but I do not suppose this. Reproduce code: --------------- <?php /* * string-to-array.php * * Developed by Ondrej Jombik <[EMAIL PROTECTED]> * Copyright (c) 2004 Platon SDG, http://platon.sk/ * Licensed under terms of GNU General Public License. * All rights reserved. * * Changelog: * 2004-05-10 - created * */ /* $Platon$ */ $str = 'string'; $ar['key'] = $str; var_dump($ar['key']); // string(6) "string" $ar['key']['sub-key'] = $ar['key']; var_dump($ar['key']); /* string(6) "string" but expected is: array(1) { ["sub-key"]=> string(6) "string" } */ $ar['key'] = array('sub-key' => $ar['key']); var_dump($ar['key']); /* now OK: array(1) { ["sub-key"]=> string(6) "string" } */ /* Modeline for ViM {{{ * vim: set ts=4: * vim600: fdm=marker fdl=0 fdc=0: * }}} */ ?> Expected result: ---------------- Written in the code. Actual result: -------------- Written in the code as well. ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=28476&edit=1