Re: PHP 5.3 bug or changed feature??
| From: | Rob Richards | Date: | Sun, 09 Dec 2007 12:22:09 +0000 |
| Subject: | Re: PHP 5.3 bug or changed feature?? | ||
| References: | 1 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-33882@lists.php.net to get a copy of this message | ||
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