Home » XML » XML_Serializer » Bug #9633
Array indexes are not leveled.
Details
| Submitted | 2006-12-15 22:52 UTC |
|---|---|
| From | admin at singlesburg dot com |
| Status | Bogus |
| Package | XML_Serializer |
| PHP Version | 5.1.1 |
| Roadmaps | (Not assigned) |
Comments
[2006-12-15 22:52 UTC] admin at singlesburg dot com
Description:
------------
When I import my XML doc into multi dimensional array, sinlge element index is not leveled as multiple elements indexes.
For example, in my XML, I have a single element as:
<subitems>
<msulabel>Index Page</msulabel>
<msufilename>index.php</msufilename>
</subitems>
this will generate an array without an index key, but when I have multiple elements as:
<subitems>
<msulabel>My Info</msulabel>
<msufilename>my_info.php?mm_id=6</msufilename>
</subitems>
<subitems>
<msulabel>My Login</msulabel>
<msufilename>my_login.php?mm_id=6</msufilename>
</subitems>
this will generate multiple index keys. The problem is that when I am building my array to export, it looks fine, but when I import, original first index (0) for a single array, it won't show up.
This cause a problem for me when I use foreach or while loops, because, loop expect a multi dimensional array.
Thank you.
Nizzy
Test script:
---------------
$unserializer = &new XML_Unserializer();
$unserializer->unserialize($xmldoc, true);
$menu_arr = $unserializer->getUnserializedData();
Expected result:
----------------
<?xml version="1.0"?>
<Menus>
<subitems>
<mmuid>1</mmuid>
<mmulabel>Main Menu</mmulabel>
<submenus>
<subitems>
<msulabel>Index Page</msulabel>
<msufilename>index.php</msufilename>
</subitems>
</submenus>
</subitems>
<subitems>
<mmuid>2</mmuid>
<mmulabel>My Control Panel</mmulabel>
<submenus>
<subitems>
<msulabel>My Info</msulabel>
<msufilename>my_info.php?mm_id=6</msufilename>
</subitems>
<subitems>
<msulabel>My Login</msulabel>
<msufilename>my_login.php?mm_id=6</msufilename>
</subitems>
........................
........................
Array
(
[subitems] => Array
(
[0] => Array
(
[mmuid] => 1
[mmulabel] => Main Menu
[submenus] => Array
(
[subitems] => Array
(
[0] => Array
(
[msulabel] => Index Page
[msufilename] => index.php
)
)
)
)
[1] => Array
(
[mmuid] => 2
[mmulabel] => My Control Panel
[submenus] => Array
(
[subitems] => Array
(
[0] => Array
(
[msulabel] => My Info
[msufilename] => my_info.php?mm_id=6
)
[1] => Array
(
[msulabel] => My Login
[msufilename] => my_login.php?mm_id=6
)
........................
........................
Actual result:
--------------
<?xml version="1.0"?>
<Menus>
<subitems>
<mmuid>1</mmuid>
<mmulabel>Main Menu</mmulabel>
<submenus>
<subitems>
<msulabel>Index Page</msulabel>
<msufilename>index.php</msufilename>
</subitems>
</submenus>
</subitems>
<subitems>
<mmuid>2</mmuid>
<mmulabel>My Control Panel</mmulabel>
<submenus>
<subitems>
<msulabel>My Info</msulabel>
<msufilename>my_info.php?mm_id=6</msufilename>
</subitems>
<subitems>
<msulabel>My Login</msulabel>
<msufilename>my_login.php?mm_id=6</msufilename>
</subitems>
........................
........................
Array
(
[subitems] => Array
(
[0] => Array
(
[mmuid] => 1
[mmulabel] => Main Menu
[submenus] => Array
(
[subitems] => Array
(
[msulabel] => Index Page
[msufilename] => index.php
)
)
)
[1] => Array
(
[mmuid] => 2
[mmulabel] => My Control Panel
[submenus] => Array
(
[subitems] => Array
(
[0] => Array
(
[msulabel] => My Info
[msufilename] => my_info.php?mm_id=6
)
[1] => Array
(
[msulabel] => My Login
[msufilename] => my_login.php?mm_id=6
)
........................
........................
[2006-12-16 17:12 UTC] admin at singlesburg dot com
Dear developer
This is very interesting. I finally solve the problem without even forcing the elements to be enum. I used the following built function to load my classes in PHP 5.1. If I use call you function outside this function, I get enum for single elements, but if I call your function inside that __autoload, then all single elements cannot be forced to be enum. FYI.
Thanks for help.
Nizzy
function __autoload($classname)
{
}