代码之家  ›  专栏  ›  技术社区  ›  Jeff

如何将XML元素数据转换为PHP数值数组

  •  1
  • Jeff  · 技术社区  · 15 年前

    我不是一个真正的Web开发人员,我正试图创建一个用于解析和显示实验数据的Web界面,所以如果这是一个非常简单的解决方案,我道歉。我试图从一个XML元素中获取数据,并将其转换为一个PHP数字数组,我可以使用gd绘制它。到目前为止,我已经完成了XML创建、XML加载和GD绘图(我认为),但我需要的是将数据转换为PHP数组以完成的关键。

    我有一个XML文件,其中存储的数字数据如下:

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

    我正在使用simplexml加载文件来读取数据文件。然后我像这样提取数据:

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

    现在我有了一个包含数据的对象,但是我不知道如何将它输出到一个数值数组中。

    1 回复  |  直到 12 年前
        1
  •  3
  •   Pascal MARTIN    15 年前

    考虑到您有这个字符串,首先必须使用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);
    

    我用过 simplexml_load_string 因为它对我的测试来说比较简单;当然,你仍然可以使用 simplexml_load_file 就像你已经做的那样。


    然后,要将包含数字的字段变为变量:

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

    这让你:

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


    然后,您可以使用 explode 对…起作用好吧,爆炸……将字符串放入数组中,使用空格作为分隔符:

    $numbers_array = explode(' ', $numbers_string);
    var_dump($numbers_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)
    

    这似乎是你一直在等待的;—)