Проблемы с массивом (Сфомирован с помощью CURL).

sunsword

Новичок
Проблемы с массивом (Сфомирован с помощью CURL).

PHP:
<?php
$data = array(
'userID' => "xxx",
'apiKey' => "xxx"
);

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, "http://api.eve-online.com/account/Characters.xml.aspx");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);

$xml = simplexml_load_string(curl_exec($ch));
curl_close($ch);

foreach ($xml->xpath('//row') as  $a => $b) {
$new[]=$b;
}
echo"<pre>";print_r($new);echo"</pre>";

?>
На выходе получаю следующий массив:

PHP:
Array
(
    [0] => SimpleXMLElement Object
        (
            [@attributes] => Array
                (
                    [name] => DarkArrow
                    [characterID] => 320169013
                    [corporationName] => Republic Military School
                    [corporationID] => 1000170
                )

        )

    [1] => SimpleXMLElement Object
        (
            [@attributes] => Array
                (
                    [name] => Djidie
                    [characterID] => 368814408
                    [corporationName] => Imperial Academy
                    [corporationID] => 1000166
                )

        )

    [2] => SimpleXMLElement Object
        (
            [@attributes] => Array
                (
                    [name] => xxx
                    [characterID] => xxxx
                    [corporationName] => xxx
                    [corporationID] => xxx
                )

        )

)

Проблема заключается в том, что с данным массивом не получается работать, запросы к его внутренностям типа $new[0]["@attributes"]["name"]; не проходят, просто не выводятся, почему не понятно. Подскажите пожалуйста.
 

Wicked

Новичок

sunsword

Новичок
Wicked
Знаю, я же говорю, ошибок нету, скрипт работает на 100%, но не выводится нужные куски массива, как будто их нету %) если бы был неверный запрос выдало бы ошибку, а её нет :((( лучше бы была.

-~{}~ 05.08.07 16:30:

"SimpleXMLElement Object" - думаешь, с этими "сущностями" надо работать именно как с массивами?
ХЗ первый раз связался с этим, но большое спасибо за новодку, буду думать в этом направлении :)
 

MajestiC

Пых
[0] => SimpleXMLElement Object

Твой метод ($new[0]["@attributes"]["name"];) работал если бы было написано:
[0] => Array
 

yantar

Новичок
У вас масив объектов, а вы обращаетесь ко всему как массивы.

так не сработает, потому, что собачка в имени свойства
Код:
$new[0]->@attributes["name"];
Воспользуйтесь функцией get_object_vars:
Код:
$arr = get_object_vars ($new[0])
и работайте дальше к с массивом
 

phprus

Moderator
Команда форума
yantar
Воспользуйтесь функцией get_object_vars:
Это что за бред? Зачем советуешь костыли, вместо правильного решения.


sunsword
Для доступа к списку атрибутов XML-тега у объектов типа SimpleXMLElement есть метод attributes()
 

sunsword

Новичок
phprus
Спасибо вы абсолютно правы именно так и решил эту проблему, спасибо ещё раз за правильный путь Wicked =)))

PHP:
foreach ($xml->xpath('//row') as   $c) {
	foreach($c->attributes() as $a => $b) {
	    if($a=="typeID") echo "typeID: <b>".$b."</b><br>";
	    if($a=="skillpoints") echo "skillpoints: <b>".$b."</b><br>";
	    if($a=="level") echo "level: <b>".$b."</b><br>";
	}
	echo "<br><hr><br>";
}
-~{}~ 06.08.07 00:50:

Тему можно закрыть :)
 
Сверху