Hello Everyon,

Casting a SimpleXML object to an array gives different results in PHP
5.2.5 and PHP 5.3-dev.

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

Reply via email to