Я начинаю с файла 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 (> 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);
}
Ваша функция xml2Array
обрабатывает одну запись иначе, чем список записей, добавляя дополнительное измерение во втором случае. Вам нужно рассматривать первый случай специально.
if (isset($a['@attributes'])) { // Single record, turn it into an array
$a = array($a);
}
Тогда ваш цикл будет работать для обоих случаев.
xml2Array()
.