[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Парсинг xml в массив
Quieteroks
Здравствуйте.

Вопрос вот в чем:
Собственно проверяю я существование xml файла, подгружаю его функцией simplexml_load_file и прохожусь по объекту циклом foreach.

И соответственно в заранее объявленный массив встраиваю ключ и его значение.
И вот тут проблема. Значение ключа может быть строка или число, а в ключ почему то передается объект:


foreach($xmlParse->block as $block){
$xmlAr[$block->id] = $block->name;
}


Как можно решить проблему с ключом, кроме явного преобразования в строку командой (string) или запуском второго цикла?



Спустя 32 минуты, 12 секунд (17.07.2012 - 23:04) Winston написал(а):
print_r($block);
Что показывает? И не плохо было бы взглянуть на xml

Спустя 1 час, 32 минуты, 55 секунд (18.07.2012 - 00:37) Quieteroks написал(а):
xml такого содержания:
<?xml version="1.0" encoding="UTF-8"?>
<blocklist>
<block>
<id>
1</id>
<name>
test1</name>
</block>
<block>
<id>
2</id>
<name>
test2</name>
</block>
</blocklist>


А print_r выводит объект, как и должен:
SimpleXMLElement Object
(
[
id] => 1
[name] => test1
)


var_dump выдал, что оба параметра внутри строковые.
echo $block->id Замечательно выводит его содержимое.

Спустя 23 минуты, 59 секунд (18.07.2012 - 01:01) Игорь_Vasinsky написал(а):
$xmlstring = '<?xml version="1.0" encoding="UTF-8"?>
<blocklist>
<block>
<id>1</id>
<name>test1</name>
</block>
<block>
<id>2</id>
<name>test2</name>
</block>
</blocklist>'
;

$xml = simplexml_load_string($xmlstring);

#echo '<pre>' . print_r($xml, 1) . '</pre>';

foreach ($xml->block as $block) {
echo $block->id.':'.$block->name.'<br />';
}

Спустя 4 минуты, 50 секунд (18.07.2012 - 01:06) Игорь_Vasinsky написал(а):
tongue.gif ой... недочитал)

Спустя 1 минута, 43 секунды (18.07.2012 - 01:08) Игорь_Vasinsky написал(а):
костылюга

foreach ($xml->block as $block) {
$arr[(string)$block->id] = (string)$block->name;
}

echo '<pre>' . print_r($arr, 1) . '</pre>';

Спустя 7 часов, 37 минут, 47 секунд (18.07.2012 - 08:46) Quieteroks написал(а):
Игорь_Vasinsky
Этот костыль и я придумал...
Других вариантов в общем нет, только явное преобразование...
Думал мож есть более изящное решение.

Спустя 6 минут, 56 секунд (18.07.2012 - 08:52) Игорь_Vasinsky написал(а):
не знай, больно с этой библией не работал, так с ходу написал... может найдутся умы - подскажут.

Спустя 5 часов, 31 минута, 57 секунд (18.07.2012 - 14:24) Winston написал(а):
Можно на php.net посмотреть, там везде где нужно используется явное преобразования типов, потому, думаю в этом нет ничего страшного smile.gif
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.