note 113659 added to function.empty
| From: | bharris at nospam dot epic dot com | Date: | Mon, 11 Nov 2013 20:59:55 +0000 |
| Subject: | note 113659 added to function.empty | ||
| Groups: | php.notes | ||
| Request: | Send a blank email to php-notes+get-197493@lists.php.net to get a copy of this message | ||
XML::Unserializer produces unexpected results because empty($key) is true when $key = 0.
Example:
<?php
include("/usr/share/php/XML/Unserializer.php");
$xml= <<<EOD
<?xml version="1.0"?>
<groups _type="array">
<XML_Serializer_Tag _originalKey="0" _type="array">
<gid _type="integer">10</gid>
</XML_Serializer_Tag>
<XML_Serializer_Tag _originalKey="5" _type="array">
<gid _type="integer">100</gid>
</XML_Serializer_Tag>
</groups>
EOD;
$uns = new XML_Unserializer();
$res = $uns->unserialize($xml);
$recs = $uns->getUnserializedData();
print_r($recs);
?>
produces
Array
(
[0] => Array
(
[gid] => 10
)
[5] => Array
(
[gid] => 100
)
)
while
<?php
include("/usr/share/php/XML/Unserializer.php");
$xml= <<<EOD
<?xml version="1.0"?>
<groups _type="array">
<XML_Serializer_Tag _originalKey="5" _type="array">
<gid _type="integer">100</gid>
</XML_Serializer_Tag>
<XML_Serializer_Tag _originalKey="0" _type="array">
<gid _type="integer">10</gid>
</XML_Serializer_Tag>
</groups>
EOD;
$uns = new XML_Unserializer();
$res = $uns->unserialize($xml);
$recs = $uns->getUnserializedData();
print_r($recs);
?>
produces
Array
(
[1] => Array
(
[gid] => 100
)
[6] => Array
(
[gid] => 10
)
)
This is because the "empty" key value of 0 results in a push onto the end of the array,
rather than an insertion at key position 0.
----
Server IP: 72.52.91.14
Probable Submitter: 72.52.91.14
----
Manual Page -- http://php.net/manual/en/function.empty.php
Edit -- https://master.php.net/note/edit/113659
Del: integrated -- https://master.php.net/note/delete/113659/integrated
Del: useless -- https://master.php.net/note/delete/113659/useless
Del: bad code -- https://master.php.net/note/delete/113659/bad+code
Del: spam -- https://master.php.net/note/delete/113659/spam
Del: non-english -- https://master.php.net/note/delete/113659/non-english
Del: in docs -- https://master.php.net/note/delete/113659/in+docs
Del: other reasons-- https://master.php.net/note/delete/113659
Reject -- https://master.php.net/note/reject/113659
Search -- https://master.php.net/manage/user-notes.php