views:

252

answers:

1

I'm not really a web developer and I'm trying to make a web interface for parsing and displaying experimental data, so I apologize if this is a ridiculously easy solution. I'm trying to take data from an XML element and convert it into a PHP numerical array that I can plot using GD. So far, I have the XML creation, XML loading, and GD plotting finished (I think), but what I need is the key to converting the data into a PHP array to finish.

I have an xml file with numeric data stored like this:

<?xml version="1.0" encoding="utf-8" ?>
<NotData>
    <Data>0 1 2 3 4 5 6 7 8 9</Data>
</NotData>

I'm using simplexml_load_file to read in the data file. Then I pull out the data like this:

$myData=$xmldata->NotData[0]->Data;

Now I have an object with the data inside, but I'm not sure how to get this out into a numeric array. Where do I go from here?

+3  A: 

Considering you have that string, you first have to load it using SimpleXML :

$str = <<<XML
<?xml version="1.0" encoding="utf-8" ?>
<NotData>
    <Data>0 1 2 3 4 5 6 7 8 9</Data>
</NotData>
XML;
$data = simplexml_load_string($str);

I used simplexml_load_string because it was simpler for my test ; of course, you can still use simplexml_load_file, as you are already doing.


Then, to get the field containing the numbers into a variable :

$numbers_string = (string)$data->Data;
var_dump($numbers_string);

Which gets you :

string '0 1 2 3 4 5 6 7 8 9' (length=19)


And, then, you can use the explode function to... well, explode... the string into an array, using a space as a separator :

$numbers_array = explode(' ', $numbers_string);
var_dump($numbers_array);

And you finally get this array :

array
  0 => string '0' (length=1)
  1 => string '1' (length=1)
  2 => string '2' (length=1)
  3 => string '3' (length=1)
  4 => string '4' (length=1)
  5 => string '5' (length=1)
  6 => string '6' (length=1)
  7 => string '7' (length=1)
  8 => string '8' (length=1)
  9 => string '9' (length=1)

Which seems to be what you were waiting for ;-)

Pascal MARTIN
Excellent, thank you so much!
Jeff
You're welcome :-) Have fun !
Pascal MARTIN