用PHP读取var_dump数据

时间:2012-02-09 22:51:17

标签: php

我是否知道如何使用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" 
            } 
        } 
    } 

3 个答案:

答案 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
}