Convert SimpleXML Object into PHP Array

Posted on Monday, October 24th 2011 / by Eric Potvin

Web Services are very useful when we need to send and receive information from third-party clients. These Web Services, generally, output or return the response in an XML format.

XML can be easily parsed in PHP using the simplexml_load_string or the SimpleXMLElement object. Now, manipulating this object can be sometime painful.

The solution: converting this object in an array. Here's two examples on how to convert this:

Let's say we have this xml:


Solution #1

function xml2array($xml) {
  $arr = array();
  foreach ($xml as $element) {
    $tag = $element->getName();
    $e = get_object_vars($element);
    if (!empty($e)) {
      $arr[$tag] = $element instanceof SimpleXMLElement ? xml2array($element) : $e;
    else {
      $arr[$tag] = trim($element);
  return $arr;

$xml = new SimpleXMLElement($string);

Solution #2

$xml = json_decode(json_encode((array) simplexml_load_string($string)), 1);

This will print out the following code using both solutions:

 [manufacturer] => Samsung
 [model] => XL30
 [display] => Array
   [screen_size] => 30
   [resolution] => 2560x1600
   [brightness] => 200
   [contrast_ratio] => 1000:1
   [response_time] => 6
   [viewing_angle_h] => 178
   [viewing_angle_v] => 178
   [colour_supported] => 16.7
   [colour_supported_metric] => M


Comments will re-open soon.

posted annonymously
Rob Thursday, December 01st 2011

This was a huge help for me. Found lots of other solutions with much more lines of code. Solution #2 works perfectly for me, thanks!

posted annonymously
John Monday, November 14th 2011

Nice tip , thank you