Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/253.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
分离php对象变量_Php_Xml_Variables_Object - Fatal编程技术网

分离php对象变量

分离php对象变量,php,xml,variables,object,Php,Xml,Variables,Object,我有一些XML将作为对象返回,如下所示: SwitchvoxResponse Object ( [apiStatus:private] => success [apiErrors:private] => Array ( ) [apiResult:private] => Array ( [calls] => Array ( [page_number] => 1

我有一些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>
                                                    )

                                            )

                                    )

                            )
                    )
            )
    )
)
SwitchvoxResponse对象
(
[apiStatus:private]=>成功
[APIRERRORS:private]=>数组
(
)
[apiResult:private]=>数组
(
[调用]=>数组
(
[页码]=>1
[总页数]=>1页
[每页项目]=>50
[项目总数]=>1
[调用]=>数组
(
[0]=>阵列
(
[id]=>14301
[发端]=>发端
[开始时间]=>2011-06-17 13:40:58
[发件人]=>呼叫方名称
[来自\u帐户\u id]=>1120
[来自\u名称]=>呼叫者\u名称
[来自_编号]=>4485
[收件人]=>被叫人姓名
[to_account_id]=>1101
[收件人姓名]=>被叫人姓名
[收件人号码]=>6534
[总持续时间]=>47
[talk_duration]=>43
[事件]=>数组
(
[事件]=>数组
(
[0]=>阵列
(
[开始时间]=>2011-06-17 13:40:58
[类型]=>传出
[显示]=>已拨号码(6534)
)
[1] =>阵列
(
[开始时间]=>2011-06-17 13:40:58
[类型]=>内部
[显示]=>被叫方姓名
)
[2] =>阵列
(
[开始时间]=>2011-06-17 13:41:02
[输入]=>正在通话
[显示]=>与被叫人通话43秒
)
[3] =>阵列
(
[开始时间]=>2011-06-17 13:41:45
[类型]=>挂断
[显示]=>来电者的姓名挂断了电话
)
)
)
)
)
)
)
)

如何提取这些变量的值?

所有三个属性都标记为
private
,因此必须通过标记为
public

的访问器方法获取它们。可以通过
SwitchvoxResponse::getResult()方法访问结果。假设
$object
是问题中引用的
SwitchvoxResponse
对象,下面的示例循环每个
调用
,并从
值打印

$result = $object->getResult();
foreach ($result['calls']['call'] as $call) {
    echo $call['from'];
}
类似地,响应状态通过
$object->getResponseStatus()
获取,任何错误通过
$object->getErrors()
获取

响应状态可以是
SV\u response\u SUCCESS
SV\u response\u FAULT
SV\u response\u FAILED


重新编辑。评论

要仅获取第一次呼叫的项目,只需执行以下操作:

$result = $object->getResult();
$call = $result['calls']['call'][0];
// And access the values like
echo $call['from_name']; 

这将返回[to_number]字段的每个实例。我只需要从调用[0]中提取值。添加['0']不起作用,['1']等也不起作用。
$result
只是问题中输出的
[call]
中的数组。人们会假设你知道如何遍历数组,是吗?啊,好吧,我在上面添加了一个快速示例。如果您对使用数组有一些一般性问题,最好就这个问题提出一个全新的问题。我已经尝试过了,结果是:
1o2M1M41187
注意:未定义的索引:to_number in…
看起来并不是每个调用都包含您可能需要的所有项。在尝试使用它之前,您必须检查它是否存在(例如,与和一起使用)。