PHP Foreach循环使用单个数组从XML到MySQL

时间:2018-02-21 22:15:52

标签: php mysql xml foreach

我从xml文件开始,输入如下:

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<severa>
<mesaj id="6caca93f" tip="ATENTIONARE"cod="GALBEN"" />
<mesaj id="6caca93g" tip="ATENTIONARE" cod="GALBEN"  />
</severa>

将PHP与xml2Array函数一起使用,我得到以下数组:

Array
(
[0] => Array
(
[@attributes] => Array
(
[id] => 6caca93f
[tip] => ATENTIONARE
[cod] => GALBEN
)
)
[1] => Array
(
[@attributes] => Array
(
[id] => 6caca93g
[tip] => ATENTIONARE
[cod] => GALBEN
)
)
)

我用foreach读取了这个结果,并将这2条记录插入到MySql中。 现在问题是:这仅适用于xml(&gt; 2)中的多个记录。如果我在xml中只有一条记录,则数组如下所示,并且没有插入行。你能告诉我应该做些什么吗?

看起来这个带有单个条目的数组有不同的形式。我希望这不是原因 非常感谢你!

    Array
(
[@attributes] => Array
(
[id] => 6caca93f
[tip] => ATENTIONARE
[cod] => GALBEN
)
)

Foreach是这样的:

foreach ($a as $row) {
        $atributes = $row['@attributes'];
        $id = $atributes['id'];
        $tip = $atributes['tip'];
        $cod = $atributes['cod'];
        mysqli_stmt_execute($st);
    }

1 个答案:

答案 0 :(得分:0)

您的xml2Array函数将单个记录视为与记录列表不同,在第二种情况下添加了额外的维度。你需要特别对待第一个案例。

if (isset($a['@attributes'])) { // Single record, turn it into an array
    $a = array($a);
}

然后你的循环将适用于这两种情况。