PHP цикл Foreach с одним массивом в MySQL из XML

0

Я начинаю с файла 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);
    }
  • 0
    "с функцией xml2Array" какая функция xml2Array? Нет встроенной функции PHP xml2Array() .
  • 0
    Это не родной, да. Но может быть добавлен для преобразования xml в phph массив. Спасибо!
Теги:
foreach

1 ответ

0
Лучший ответ

Ваша функция xml2Array обрабатывает одну запись иначе, чем список записей, добавляя дополнительное измерение во втором случае. Вам нужно рассматривать первый случай специально.

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

Тогда ваш цикл будет работать для обоих случаев.

  • 0
    Спасибо вам большое! Оно работает.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню