我读过这个优秀的答案; How can I access an array/object?
但是,我似乎无法从嵌套数组中提取出我需要的对象值。我正在使用广告系列监控API,它会转储以下对象。我需要能够回显或print_r“电话”自定义字段值:
这是我的查询在var_dump($ result-> response)中生成的内容;
Got subscriber
object(stdClass)#728 (6) {
["EmailAddress"]=>
string(29) "example@mail.com"
["Name"]=>
string(7) "Alan"
["Date"]=>
string(19) "2016-10-07 17:10:00"
["State"]=>
string(6) "Active"
["CustomFields"]=>
array(4) {
[0]=>
object(stdClass)#727 (2) {
["Key"]=>
string(5) "Phone"
["Value"]=>
string(7) "12345678"
}
[snip]
如何通过选择“Key”字符串并抓取“Value”字符串来回显或print_r电话号码?我试过下面(和变化)但没有工作;
foreach($result->response->CustomFields as $CustomField) {
if(!empty($CustomField->Key->Phone)) {
$phone = $CustomField->Key->Phone->Value;
}
echo 'test phone'. $phone;
}
以下DOES工作(类似于此线程php accessing attributes in json) - 但是,使用下面的整数[2]的问题是它可能会更改为不同的键,具体取决于中的字段数给定用户填充的数组 - 因此此方法不可靠;
print_r($result->response->CustomFields[2]->Value);
答案 0 :(得分:1)
你这样做的那一刻:
foreach($result->response->CustomFields as $CustomField) {
您可以访问以下字段:
$CustomField->Key
$CustomField->Value
因此,如果您想进一步处理它,您可以执行以下操作:
$someClass->{$CustomField->Key} = $CustomField->Value
其转换为: $ someClass-> Phone =" 12345678" 。这很大程度上取决于你接下来要用值做什么。