Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/262.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用PHP将XML转换为数组?_Php_Arrays_Xml - Fatal编程技术网

如何使用PHP将XML转换为数组?

如何使用PHP将XML转换为数组?,php,arrays,xml,Php,Arrays,Xml,我试图在数组中拆分XML,下面是我的php代码: 我不知道如何像上面的示例输出那样将它们设置到数组中。希望有人能帮助我。谢谢。此代码片段将把XML转换为数组 $array = json_decode(json_encode((array)simplexml_load_string($xml)),true); echo '<pre>'; print_r($array); $array=json_decode(json_encode((array)simplexml_load_str

我试图在数组中拆分XML,下面是我的php代码:


我不知道如何像上面的示例输出那样将它们设置到数组中。希望有人能帮助我。谢谢。

此代码片段将把XML转换为数组

$array = json_decode(json_encode((array)simplexml_load_string($xml)),true);
echo '<pre>';
print_r($array);
$array=json_decode(json_encode((array)simplexml_load_string($xml)),true);
回声';
打印(数组);
然后您可以将其作为数组使用

步骤:

1) 首先使用
simplexml\u load\u string()
将XML转换为可读的字符串对象

2) 然后
json\u encode()
it

3)
json\u decode()
it,带有第二个参数
TRUE
,它将返回数组而不是对象

4) 现在,XML被转换为数组

5) 取一个空白数组,从上面的代码循环数组并向其追加元素

要获得所需的输出:

Array
(
    [0] => Array
        (
            [title] => Java
            [tutor] => Gopal
            [duration] => 3
            [price] => $30
        )

    [1] => Array
        (
            [title] => Hadoop
            [tutor] => Satish
            [duration] => 3
            [price] => $50
        )

    [2] => Array
        (
            [title] => html
            [tutor] => raju
            [duration] => 5
            [price] => $50
        )

    [3] => Array
        (
            [title] => Web Technologies
            [tutor] => Javed
            [duration] => 10
            [price] => $60
        )

)

你的初始代码是创建一个数组的90%——不用担心json编码和解码,只需
$books[]=['title'=>$books->title',tutor'=>$books->tutor…
代替你的
echo…
,别忘了先创建一个空白数组。
Array
(
[0] => Array
    (
        [title] => Java
        [tutor] => Gopal
        [duration] => 3
        [price] => $30
    )

[1] => Array
    (
        [title] => Hadoop
        [tutor] => Satish
        [duration] => 3
        [price] => $50
    )

[2] => Array
    (
        [title] => HTML
        [tutor] => raju
        [duration] => 5
        [price] => $50
    )

[3] => Array
    (
        [title] => Web Technologies
        [tutor] => Javed
        [duration] => 10
        [price] => $60
    )
$array = json_decode(json_encode((array)simplexml_load_string($xml)),true);
echo '<pre>';
print_r($array);
<?php
$xml = '<?xml version = "1.0" encoding = "utf-8"?>
<tutorialspoint>

<course category = "JAVA">
  <title lang = "en">Java</title>
  <tutor>Gopal</tutor>
  <duration>3</duration>
  <price>$30</price>
</course>

<course category = "HADOOP">
  <title lang = "en">Hadoop</title>.
  <tutor>Satish</tutor>
  <duration>3</duration>
  <price>$50</price>
</course>

<course category = "HTML">
  <title lang = "en">html</title>
  <tutor>raju</tutor>
  <duration>5</duration>
  <price>$50</price>
</course>

<course category = "WEB">
  <title lang = "en">Web Technologies</title>
  <tutor>Javed</tutor>
  <duration>10</duration>
  <price>$60</price>
</course>
</tutorialspoint>';

$arr = [];
$array = json_decode(json_encode(simplexml_load_string($xml)),true);
if ( ! empty($array)) {
 $i=0;
 foreach ($array['course'] as $elem) {
   $arr[$i]['title'] = $elem['title'];
   $arr[$i]['tutor'] = $elem['tutor'];
   $arr[$i]['duration'] = $elem['duration'];
   $arr[$i]['price'] = $elem['price'];
  ++$i;
 }
}
echo '<pre>';print_r($arr);echo '</pre>';
Array
(
    [0] => Array
        (
            [title] => Java
            [tutor] => Gopal
            [duration] => 3
            [price] => $30
        )

    [1] => Array
        (
            [title] => Hadoop
            [tutor] => Satish
            [duration] => 3
            [price] => $50
        )

    [2] => Array
        (
            [title] => html
            [tutor] => raju
            [duration] => 5
            [price] => $50
        )

    [3] => Array
        (
            [title] => Web Technologies
            [tutor] => Javed
            [duration] => 10
            [price] => $60
        )

)