#21918 [Ver]: strange behaviour of mixed type in array-keys

From: 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

« previous php.bugs (#31544) next »