我是否知道如何使用PHP检索以下示例中每个数组中给定的Name和middle name值?谢谢。
object(stdClass)#13 (1)
{ ["contact"]=> array(157) {
[0]=> object(stdClass)#14 (6) {
["created"]=> string(20) "2007-10-27T04:54:45Z"
["updated"]=> string(20) "2007-10-27T04:54:45Z"
["uri"]=> string(73) "http://social.yahooapis.com/v1/user/SAFWRTHXMZPTISKTIEJPYKLW4I/contact/557"
["isConnection"]=> string(5) "false"
["id"]=> string(2) "57"
["fields"]=> array(2) {
[0]=> object(stdClass)#15 (8) {
["created"]=> string(20) "2007-10-27T04:54:45Z"
["updated"]=> string(20) "2007-10-27T04:54:45Z"
["uri"]=> string(85) "http://social.yahooapis.com/v1/user/SAFWRTHXMZPTISKTIEJPYKLW4I/contact/57/otherid/1351"
["id"]=> string(3) "131"
["type"]=> string(7) "otherid"
["value"]=> string(31) "anastasis_bla@hotmail.com"
["editedBy"]=> string(5) "OWNER"
["flags"]=> string(3) "MSN"
}
[1]=> object(stdClass)#16 (7) {
["created"]=> string(20) "2007-10-27T04:54:45Z"
["updated"]=> string(20) "2007-10-27T04:54:45Z"
["uri"]=> string(82) "http://social.yahooapis.com/v1/user/SAFWRTHXMZPTISKTIEJPYKLW4I/contact/57/name/1310"
["id"]=> string(3) "130"
["type"]=> string(4) "name"
["value"]=> object(stdClass)#17 (7) {
["givenName"]=> string(61) "- miss elaine"
["middleName"]=> NULL
["familyName"]=> NULL
["prefix"]=> NULL
["suffix"]=> NULL
["givenNameSound"]=> NULL
["familyNameSound"]=> NULL
}
["editedBy"]=> string(5) "OWNER"
}
}
} [1]=> object(stdClass)#18 (6) {
["created"]=> string(20) "2009-04-05T13:02:53Z"
["updated"]=> string(20) "2009-04-05T13:02:53Z"
["uri"]=> string(74) "http://social.yahooapis.com/v1/user/SAFWRTHXMZPTISKTIEJPYKLW4I/contact/11"
["isConnection"]=> string(5) "false"
["id"]=> string(3) "116"
["fields"]=> array(2) {
[0]=> object(stdClass)#19 (8) {
["created"]=> string(20) "2009-04-05T13:02:53Z"
["updated"]=> string(20) "2009-04-05T13:02:53Z"
["uri"]=> string(86) "http://social.yahooapis.com/v1/user/SAFWRTHXMZPTISKTIEJPYKLW4I/contact/116/otherid/52"
["id"]=> string(3) "252"
["type"]=> string(7) "otherid"
["value"]=> string(25) "kellying@hotmail.com"
["editedBy"]=> string(5) "OWNER"
["flags"]=> string(3) "MSN"
} [1]=> object(stdClass)#20 (7) {
["created"]=> string(20) "2009-04-05T13:02:53Z"
["updated"]=> string(20) "2009-04-05T13:02:53Z"
["uri"]=> string(83) "http://social.yahooapis.com/v1/user/SAFWRTHXMZPTISKTIEJPYKLW4I/contact/116/name/21"
["id"]=> string(3) "251"
["type"]=> string(4) "name"
["value"]=> object(stdClass)#21 (7) {
["givenName"]=> string(26) "Kelly"
["middleName"]=> NULL
["familyName"]=> NULL
["prefix"]=> NULL
["suffix"]=> NULL
["givenNameSound"]=> NULL
["familyNameSound"]=> NULL }
["editedBy"]=> string(5) "OWNER"
}
}
}
答案 0 :(得分:0)
要访问您将使用的第一个(未经测试):
$myObject->contact[0]->fields[1]['value']['middleName'];
答案 1 :(得分:0)
您需要阅读var dump types 以确定如何访问数据结构。如果它显示object
(例如,在您的转储中首先列出object(stdClass)#13
),那么您将使用->
运算符来访问列出的元素(例如$object->contact
)。如果它显示array
,则可以使用索引表示法[0]
,或者,如果有多个元素,则使用循环结构进行迭代:
foreach ($object->contact as $contact) {
foreach ($contact->fields as $field) {
if ($field->type == 'name') {
echo $field->value->givenName, ' ', echo $field->value->middleName;
}
}
}
答案 2 :(得分:0)
您应该使用两个嵌套的foreach循环和property_exists()
,如下所示:
foreach( $obj->contact as $contact){
foreach( $contact->fields as $field){
if( property_exists( $field, 'givenName') &&
property_exists( $field, 'middleName')){
// Or use if( $field->type == 'name') as webbiedave suggested
// Here goes your desired values
// Do whatever you want with them
$field->givenName;
$field->middleName;
// If you want only one set of names per each contact, add break here
}
}
// Here goes handling for contacts wit no desired information
}