#48171 [Bgs]: Unserialize converts string to integer in case of numeric properties
| From: | jani@php.net | Date: | Wed, 06 May 2009 18:44:28 +0000 |
| Subject: | #48171 [Bgs]: Unserialize converts string to integer in case of numeric properties | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-136861@lists.php.net to get a copy of this message | ||
ID: 48171
Updated by: jani@php.net
Reported By: csnyder at fcny dot org
Status: Bogus
Bug Type: Scripting Engine problem
Operating System: Linux
PHP Version: 5.2.9
New Comment:
See bug #45959
Previous Comments:
------------------------------------------------------------------------
[2009-05-06 18:43:19] csnyder at fcny dot org
Bogus really? If serialize handles numeric property names correctly,
why shouldn't unserialize?
Also, would be interested in actual citation in the manual as to why
this bug is bogus. Thanks.
------------------------------------------------------------------------
[2009-05-06 18:39:06] jani@php.net
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
------------------------------------------------------------------------
[2009-05-06 18:36:32] csnyder at fcny dot org
Description:
------------
When unserializing a string like
O:8:"stdClass":3:{s:5:"22387";s:1:"a";s:5:"22386";s:1:"a";s:5:"22368";s:1:"a";},
the resulting object will have integers as property names instead of
strings.
This may be regression of #43614, marked fixed in CVS but that was a
year ago.
Reproduce code:
---------------
<?php
// an object with some numeric keys
$keys = array( "1", "2", "3" );
foreach( $keys AS $key ) {
$obj->{$key} = 'a';
}
var_dump( $obj );
$s = serialize( $obj );
$u = unserialize( $s );
var_dump( $u );
?>
Expected result:
----------------
object(stdClass)#1 (3) {
["1"]=>
string(1) "a"
["2"]=>
string(1) "a"
["3"]=>
string(1) "a"
}
object(stdClass)#2 (3) {
["1"]=>
string(1) "a"
["2"]=>
string(1) "a"
["3"]=>
string(1) "a"
}
Actual result:
--------------
object(stdClass)#1 (3) {
["1"]=>
string(1) "a"
["2"]=>
string(1) "a"
["3"]=>
string(1) "a"
}
object(stdClass)#2 (3) {
[1]=>
string(1) "a"
[2]=>
string(1) "a"
[3]=>
string(1) "a"
}
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=48171&edit=1