分离php对象变量
我有一些XML将作为对象返回,如下所示:分离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
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…
看起来并不是每个调用都包含您可能需要的所有项。在尝试使用它之前,您必须检查它是否存在(例如,与和一起使用)。