Проблема с ключом печати SimpleXML - PullRequest
0 голосов
/ 15 августа 2011

Я искал в Google более часа и разочарован, это кажется таким простым Все, что я пытаюсь распечатать, это мой accountId. Вот xml, который мне возвращают с сервера:

SimpleXMLElement Object
(
[accounts] => SimpleXMLElement Object
    (
        [account] => SimpleXMLElement Object
            (
                [billingStreet] => SimpleXMLElement Object
                    (
                    )

                [billingCity] => SimpleXMLElement Object
                    (
                    )

                [billingState] => SimpleXMLElement Object
                    (
                    )

                [billingPostalCode] => SimpleXMLElement Object
                    (
                    )

                [billingCountry] => SimpleXMLElement Object
                    (
                    )

                [city] => Los Angeles
                [accountId] => XXXXX
                [companyName] => SimpleXMLElement Object
                    (
                    )

                [country] => United States
                [email] => XXXXX
                [enabled] => 1
                [fax] => SimpleXMLElement Object
                    (
                    )

                [firstName] => XXXXX
                [lastName] => XXXXX
                [multiClientFolder] => 0
                [multiUser] => 0
                [phone] => XXXXX
                [postalCode] => XXXXX
                [state] => CA
                [street] => XXXXX
                [title] => SimpleXMLElement Object
                    (
                    )

                [accountType] => 0
                [subscriberLimit] => 250000
            )

    )

[total] => 1
[limit] => 20
[offset] => 0
)

Все, что я хочу, это accountId. Я использую это, и он ничего не печатает:

$ch=curl_init("https://app.sandbox.icontact.com/icp/a/");
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
$buf = curl_exec($ch);
curl_close($ch);
$xml = simplexml_load_string($buf);
$aid=$xml->$accounts->$account->$accountId;
print($aid);

Я могу напечатать весь массив xml просто отлично с print_r. Я не уверен, что я делаю неправильно

Ответы [ 2 ]

3 голосов
/ 15 августа 2011

Может быть, $ aid = $ xml-> account-> account-> accountId;?

1 голос
/ 16 августа 2011

Если в ответе есть возможность получить более одной учетной записи, вы можете добавить индекс массива к элементу account:

$aid = $xml->accounts->account[0]->accountId;

Или переберите учетные записи:

foreach ($xml->accounts->account as $account) {
    ...
}

Также обратите внимание, что $ aid будет иметь тип SimpleXMLElement. В большинстве случаев вы можете использовать это как есть, и оно будет автоматически приведено к соответствующему типу, но если вы хотите получить значение в виде строки, вы можете использовать явное приведение:

$aid = (string) $xml->accounts->account[0]->accountId;
...