#30885 [Opn->Bgs]: Accessing string characters with dubious array indexes
| From: | iliaa@php.net | Date: | Wed, 24 Nov 2004 22:14:10 +0000 |
| Subject: | #30885 [Opn->Bgs]: Accessing string characters with dubious array indexes | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-69425@lists.php.net to get a copy of this message | ||
ID: 30885
Updated by: iliaa@php.net
Reported By: php-bug-2004 at ryandesign dot com
-Status: Open
+Status: Bogus
Bug Type: *General Issues
Operating System: N/A
PHP Version: 5.0.2
New Comment:
Thank you for taking the time to write to us, but this is not
a bug. Please double-check the documentation available at
http://www.php.net/manual/ and the instructions on how to
report
a bug at http://bugs.php.net/how-to-report.php
this is expected.
Previous Comments:
------------------------------------------------------------------------
[2004-11-24 19:41:43] php-bug-2004 at ryandesign dot com
I'm sorry -- I just found the bug of which this one is a
duplicate:
http://bugs.php.net/bug.php?id=29271
But I am not satisfied with the resolution of that bug
("bogus"). The problem is that when I said $test['some
string'] = '234' I _wanted_ to create an associative
array -- and if $test had been undefined, that would
have happened. But because $test was already a string,
the behavior was different and undesired. The problem is
that $test was expected to be undefined at that point in
the code, but due to an unexpected set of circumstances
actually turned out to be a string. The amount of
debugging that was necessary to discover this mistake
was non-trivial, and it could have been prevented if PHP
had issued a warning.
------------------------------------------------------------------------
[2004-11-24 19:01:18] php-bug-2004 at ryandesign dot com
Description:
------------
Accessing a character of a string using the deprecated
array notation when the array index is not a number does
not produce a notice or warning, but I believe it
should.
If I write $test['some string'] = '234' what I probably
want to do is to have $test be an array with a key
'some string' and a value '234', but if $test was
already a string, PHP instead sets character index 0 of
the string to "2". PHP should issue an error of some
kind, alerting the programmer that $test is being used
as a string, so that the programmer can properly
initialize the array with $test = array() before filling
it.
Reproduce code:
---------------
$test = 'blah';
$test[2] = 'x';
// sets the third character of $test to "x"
echo $test . "<br />\n";
// outputs "blxh"
$test['some string'] = '234';
// sets the first character of $test to "2"
echo $test . "<br />\n";
// outputs "2lxh"
Expected result:
----------------
Warning: invalid non-numeric index into string $test
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=30885&edit=1