разделение переменных объекта php - PullRequest
0 голосов
/ 17 июня 2011

У меня есть некоторый XML, который возвращается как объект, например:

SwitchvoxResponse Object
(
[apiStatus:private] => success
[apiErrors:private] => Array
    (
    )

[apiResult:private] => Array
    (
        [calls] => Array
            (
                [page_number] => 1
                [total_pages] => 1
                [items_per_page] => 50
                [total_items] => 1
                [call] => Array
                    (
                        [0] => Array
                            (
                                [id] => 14301
                                [origination] => outgoing
                                [start_time] => 2011-06-17 13:40:58
                                [from] => CALLER_NAME <4485>
                                [from_account_id] => 1120
                                [from_name] => CALLER_NAME
                                [from_number] => 4485
                                [to] => CALLEE_NAME <6534>
                                [to_account_id] => 1101
                                [to_name] => CALLEE_NAME
                                [to_number] => 6534
                                [total_duration] => 47
                                [talk_duration] => 43
                                [events] => Array
                                    (
                                        [event] => Array
                                            (
                                                [0] => Array
                                                    (
                                                        [start_time] => 2011-06-17 13:40:58
                                                        [type] => OUTGOING
                                                        [display] => Dialed number (6534)
                                                    )

                                                [1] => Array
                                                    (
                                                        [start_time] => 2011-06-17 13:40:58
                                                        [type] => INTERNAL
                                                        [display] => Rang CALLEE_NAME <6534>
                                                    )

                                                [2] => Array
                                                    (
                                                        [start_time] => 2011-06-17 13:41:02
                                                        [type] => TALKING
                                                        [display] => Talked to CALLEE_NAME <6534> for 43 seconds
                                                    )

                                                [3] => Array
                                                    (
                                                        [start_time] => 2011-06-17 13:41:45
                                                        [type] => HANGUP
                                                        [display] => Call was hung up by CALLER_NAME <4485>
                                                    )

                                            )

                                    )

                            )
                    )
            )
    )
)

Как вытащить значения этих переменных?

Ответы [ 2 ]

1 голос
/ 17 июня 2011

Доступ к результатам можно получить с помощью метода SwitchvoxResponse::getResult().Учитывая, что $object является объектом SwitchvoxResponse, указанным в вопросе, приведенный ниже пример циклически перебирает все значения call и печатает значения from.

$result = $object->getResult();
foreach ($result['calls']['call'] as $call) {
    echo $call['from'];
}

Аналогично, статус ответа выбирается через $object->getResponseStatus() и любые ошибки через $object->getErrors().

Состояния ответа могут быть одним из SV_RESPONSE_SUCCESS, SV_RESPONSE_FAULT или SV_RESPONSE_FAILED.


Редактировать повторно.комментарии

Чтобы получить предметы только для первого звонка, просто сделайте:

$result = $object->getResult();
$call = $result['calls']['call'][0];
// And access the values like
echo $call['from_name']; 
0 голосов
/ 17 июня 2011

Все три свойства помечены private, поэтому они должны быть получены с помощью методов доступа, помеченных public

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...