2012-02-09 3 views
-5

Могу ли я узнать, как получить данные givenNmae и middlename в каждом массиве в следующем примере с помощью PHP? Спасибо.Прочитать данные var_dump с помощью PHP

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) "[email protected]" 
       ["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) "[email protected]" 
       ["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

Какой у вас код до сих пор? – Vyktor

+0

, пожалуйста, прочитайте главы об объектах и ​​массивах в [Руководстве по PHP] (http://php.net). – Gordon

ответ

0

Вы хотите прочитать УАК дамп типы, чтобы определить, как получить доступ к структуре данных. Если в нем указано 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; 
     } 
    } 
} 
0

Чтобы получить доступ к первому, который вы будете использовать (непроверенные):

$myObject->contact[0]->fields[1]['value']['middleName']; 
0

Вы должны использовать два вложенных цикла по каждому элементу и 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 
} 
Смежные вопросы