#21918 [Ver]: strange behaviour of mixed type in array-keys
| From: | messju at lammfellpuschen dot de | Date: | Wed, 29 Jan 2003 08:22:57 +0000 |
| Subject: | #21918 [Ver]: strange behaviour of mixed type in array-keys | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-31544@lists.php.net to get a copy of this message | ||
ID: 21918
User updated by: messju@lammfellpuschen.de
Reported By: messju@lammfellpuschen.de
Status: Verified
Bug Type: Arrays related
Operating System: Linux
PHP Version: 4.3.0/5.0.0
New Comment:
I relied on http://www.php.net/manual/en/language.types.array.php
it states:
"A key is either an integer or a string. If a key is the standard
representation of an integer, it will be interpreted as such (i.e. "8"
will be interpreted as 8, while "08" will be interpreted as "08")."
so the keys should be casted to int, or it is a documentation-bug, or
"-1" is not a "standard representation of an integer".
Previous Comments:
------------------------------------------------------------------------
[2003-01-29 00:57:01] sniper@php.net
<?php
$a = array(
'-1' => '-1',
'0' => '0',
'1' => '1',
);
var_dump($a);
?>
Output:
array(3) {
["-1"]=>
string(2) "-1"
[0]=>
string(1) "0"
[1]=>
string(1) "1"
}
(the '0' and '1' indexes are converted to integers..)
Not sure if this is actually expected behaviour. :)
------------------------------------------------------------------------
[2003-01-29 00:39:34] nicos@php.net
The bug can be that it shouldn't cast positive numbers to string and
not that it should cast negative numbers to string.
------------------------------------------------------------------------
[2003-01-29 00:31:41] nicos@php.net
Verified under PHP 4.3.0 with Zend Engine v1.3.0 and PHP 5.0.0-dev with
Zend Engine v2.0.0-dev.
It looks like '-1' isn't casted to int as it should.
------------------------------------------------------------------------
[2003-01-28 04:58:13] messju@lammfellpuschen.de
<?php
$a = array(-1=>1,
'-1'=>2,
0=>3,
'0'=>4,
1=>5,
'1'=>6
);
print_r($a);
?>
produces:
Array
(
[-1] => 1
[-1] => 2
[0] => 4
[1] => 6
)
foreach (array_keys($a) as $key) echo $key, ': ', gettype($key), "\n";
produces:
-1: integer
-1: string
0: integer
1: integer
so it seems strings containing negative integers do not get converted
to
integers automagically but positive integers are.
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=21918&edit=1