This happens with many more functions. So i can verify this bug. php -r "echo md5(serialize(simplexml_load_file('example.xml'))) . PHP_EOL . phpversion() . PHP_EOL;"
Output PHP 5.2.5: a6d7776fcb0e9c085b0d5972df792dac 5.2.5 Output PHP 5.3.0-dev (latest snap) 3e442cb7c8507c8941011735bb46e6de 5.3.0-dev -- Marco On Dec 9, 2007 1:22 PM, Rob Richards <[EMAIL PROTECTED]> wrote: > Hi Frank, > > Frank M. Kromann wrote: > > Hello Everyon, > > > > Casting a SimpleXML object to an array gives different results in PHP > > 5.2.5 and PHP 5.3-dev. > > > This is due to the implementation of the get_debug_info handler merged > from HEAD. > The same result happens when calling get_object_vars on a > SimpleXMLElement object. > > Marcus, was it intended to only include @attributes with print_r/var_dump? > > Rob > > Source: > > > > $xml = simplexml_load_file("sample.xml"); > > > > foreach($xml->column as $column) { > > var_dump($column); > > var_dump((array)$column); > > } > > > > sample.xml > > > > ?xml version="1.0"?> > > <cpdata> > > <column name="ENTERTAINMENT"> > > <module>cv</module> > > <module>entsimp</module> > > </column> > > <column name="SEAT CONTROL"> > > <module>pp</module> > > <module>sc</module> > > </column> > > </cpdata> > > > > PHP 5.2 output: > > object(SimpleXMLElement)#4 (2) { > > ["@attributes"]=> > > array(1) { > > ["name"]=> > > string(13) "ENTERTAINMENT" > > } > > ["module"]=> > > array(2) { > > [0]=> > > string(2) "cv" > > [1]=> > > string(7) "entsimp" > > } > > } > > array(2) { > > ["@attributes"]=> > > array(1) { > > ["name"]=> > > string(13) "ENTERTAINMENT" > > } > > ["module"]=> > > array(2) { > > [0]=> > > string(2) "cv" > > [1]=> > > string(7) "entsimp" > > } > > } > > object(SimpleXMLElement)#5 (2) { > > ["@attributes"]=> > > array(1) { > > ["name"]=> > > string(12) "SEAT CONTROL" > > } > > ["module"]=> > > array(2) { > > [0]=> > > string(2) "pp" > > [1]=> > > string(2) "sc" > > } > > } > > array(2) { > > ["@attributes"]=> > > array(1) { > > ["name"]=> > > string(12) "SEAT CONTROL" > > } > > ["module"]=> > > array(2) { > > [0]=> > > string(2) "pp" > > [1]=> > > string(2) "sc" > > } > > } > > > > PHP 5.3 output: > > > > object(SimpleXMLElement)#4 (2) { > > ["@attributes"]=> > > array(1) { > > ["name"]=> > > string(13) "ENTERTAINMENT" > > } > > ["module"]=> > > array(2) { > > [0]=> > > string(2) "cv" > > [1]=> > > string(7) "entsimp" > > } > > } > > array(1) { > > ["module"]=> > > array(2) { > > [0]=> > > string(2) "cv" > > [1]=> > > string(7) "entsimp" > > } > > } > > object(SimpleXMLElement)#5 (2) { > > ["@attributes"]=> > > array(1) { > > ["name"]=> > > string(12) "SEAT CONTROL" > > } > > ["module"]=> > > array(2) { > > [0]=> > > string(2) "pp" > > [1]=> > > string(2) "sc" > > } > > } > > array(1) { > > ["module"]=> > > array(2) { > > [0]=> > > string(2) "pp" > > [1]=> > > string(2) "sc" > > } > > } > > > > Not that the attributes are gone when SimpleXML objects are converted in > > PHP 5.3. Is this a bug or a feature change? > > > > - Frank > > > > > > -- > PHP Internals - PHP Runtime Development Mailing List > To unsubscribe, visit: http://www.php.net/unsub.php > > -- Marco Kaiser