2015-08-13 2 views
0

Я в проект, где я пытаюсь получить информацию из ответа json (снова), которую я получил от google +. Мне нужно вернуть массив после заполнения его некоторой информацией из ответа json.Как получить данные из Google plus json php foreach loop

код [модифицировано] JSON ответ таким образом:

{ 
"items": [ 
    { 
     "kind": "plus#activity", 
     "etag": "\"gLJf7Ldsgfsdgsgsf9ES9mEc/LFcp0tW7Ffgfsdgdf4Yfgdff3Z8\"", 
     "title": "first title", 
     "published": "2015-08-13T12:23:36.316Z", 
     "updated": "2015-08-13T12:23:36.316Z", 
     "id": "z12njfgogxirwdsoihosdhgjsdghusdn", 
     "url": "https://plus.google.com/+ABCBEHGHIJ/posts/8QZBMRjHVMF", 
     "actor": { 
      "id": "210973863758690009009", 
      "displayName": "a name", 
      "url": "https://plus.google.com/210973863758690009009", 
      "image": { 
       "url": "https://lh4.googleusercontent.com/-ihfjbhjbsduj/AAAfgdagAAAI/AAAgdfgfdAPQ/oBXvfgdgdf1aeLQ/photo.jpg?sz=50" 
      }, 
      "verification": { 
       "adHocVerified": "UNKNOWN_VERIFICATION_STATUS" 
      } 
     }, 
     "verb": "post", 
     "object": { 
      "objectType": "note", 
      "actor": { 
       "verification": { 
        "adHocVerified": "UNKNOWN_VERIFICATION_STATUS" 
       } 
      }, 
      "content": " \u003ca rel=\"nofollow\" class=\"ot-hashtag\" href=\"https://plus.google.com/s/%oko\"\u003es\u003c/a\u003e\ufeff", 
      "url": "https://plus.google.com/+ABCBEHGHIJ/posts/8QZiUyuyuobsvASKKHVMF", 
      "replies": { 
       "totalItems": 0, 
       "selfLink": "https://www.googleapis.com/plus/v1/activities/z12ZiUyuyuobsvASKKcxqnn/comments" 
      }, 
      "plusoners": { 
       "totalItems": 0, 
       "selfLink": "https://www.googleapis.com/plus/v1/activities/z12njfgogZiUyuyuobsvASKKcxqnn/people/plusoners" 
      }, 
      "resharers": { 
       "totalItems": 0, 
       "selfLink": "https://www.googleapis.com/plus/v1/activities/z12njfZiUyuyuobsvASKKqnn/people/resharers" 
      }, 
      "attachments": [ 
       { 
        "objectType": "photo", 
        "displayName": "Photo 1", 
        "id": "210973863758690009009.6618960307328673257603073286732572860914", 
        "content": "123", 
        "url": "https://plus.google.com/photos/21096189603073286732572860914009/albums/616189603073286732572860914457/66189603073286732572860914385860914", 
        "image": { 
         "url": "https://lh5.googleusercontent.com/-2dgjFRZCII8/VcyMOOCHLTI/BAAHYGHDSJH/0XtjUD1perY/w506-h750/11017878_1655020691394612_1878283374465430482_n.jpg", 
         "type": "image/jpeg" 
        }, 
        "fullImage": { 
         "url": "https://lh5.googleusercontent.com/-2dgjFRSDSDD8/VcyMSDSDSI/BAAHYGHDSJHDSIKA/0XtjIUYDIGIDGerY/11017878_1655020DSDKHSJ612_1878283374SDSDSD30482_n.jpg", 
         "type": "image/jpeg", 
         "height": 540, 
         "width": 540 
        } 
       } 
      ] 
     }, 
     "provider": { 
      "title": "Google+" 
     }, 
     "access": { 
      "kind": "plus#acl", 
      "description": "Public", 
      "items": [ 
       { 
        "type": "public" 
       } 
      ] 
     } 
    }, 
    { 
     "kind": "plus#activity", 
     "etag": "\"gLJf7LwN3wOpLHXk4IeQ9ES9mEc/TUMFP7Wc8QTGatBg1vGSEbjPPDE\"", 
     "title": "second title", 
     "published": "2015-08-13T11:57:49.262Z", 
     "updated": "2015-08-13T11:57:49.262Z", 
     "id": "z1iohyfsdugsjhockob0n232vjiz5xancxqnn", 
     "url": "https://plus.google.com/+ABCBEHGHIJ/posts/4DVBTreNkyA", 
     "actor": { 
      "id": "210973863758690009009", 
      "displayName": "a name", 
      "url": "https://plus.google.com/210973863758690009009", 
      "image": { 
       "url": "https://lh4.googleusercontent.com/-ihfjbhjbsduj/BAAHYGHDSJH/BAAHYGHDSJH/oBXvDSDASAeLQ/photo.jpg?sz=50" 
      }, 
      "verification": { 
       "adHocVerified": "UNKNOWN_VERIFICATION_STATUS" 
      } 
     }, 
     "verb": "post", 
     "object": { 
      "objectType": "note", 
      "actor": { 
       "verification": { 
        "adHocVerified": "UNKNOWN_VERIFICATION_STATUS" 
       } 
      }, 
      "content": "07\ufeff", 
      "url": "https://plus.google.com/+ABCBEHGHIJ/posts/4DVBiodjjdmknaayA", 
      "replies": { 
       "totalItems": 0, 
       "selfLink": "https://www.googleapis.com/plus/v1/activities/pfjknsfubsnjbsb0n232vjiz5xancxqnn/comments" 
      }, 
      "plusoners": { 
       "totalItems": 0, 
       "selfLink": "https://www.googleapis.com/plus/v1/activities/pfjknsfubsnjbsb0n232vjiz5xancxqnn/people/plusoners" 
      }, 
      "resharers": { 
       "totalItems": 0, 
       "selfLink": "https://www.googleapis.com/plus/v1/activities/pfjknsfubsnjbsb0n232vjiz5xancxqnn/people/resharers" 
      }, 
      "attachments": [ 
       { 
        "objectType": "photo", 
        "displayName": "Photo 2", 
        "id": "210973863758690009009.6837572367923789379", 
        "content": "456", 
        "url": "https://plus.google.com/photos/210973863758690009009/albums/6947862082892799114865/69843868408496745035842", 
        "image": { 
         "url": "https://lh3.googleusercontent.com/-Tvib82iMpsk/VcyGKh3UGAI/ADLJSKNSHJBSDNB AAQM/cyhYX3SifDY/w506-h750/1024-2006_1011_093752.jpg", 
         "type": "image/jpeg" 
        }, 
        "fullImage": { 
         "url": "https://lh3.googleusercontent.com/-Tvijihjsdbnjgsdupsk/VcfjhjfsbjgsugAI/ApkdlnsdjkbjsdAQM/cyhYX3SifDY/w1024-h768/1024-2006_1011_093752.jpg", 
         "type": "image/jpeg", 
         "height": 768, 
         "width": 1024 
        } 
       } 
      ] 
     }, 
     "provider": { 
      "title": "Google+" 
     }, 
     "access": { 
      "kind": "plus#acl", 
      "description": "Public", 
      "items": [ 
       { 
        "type": "public" 
       } 
      ] 
     } 
    }, 
    { 
     "kind": "plus#activity", 
     "etag": "\"gLJfnjsdjnvdsvhsdIeQ9EpoifkjnfmEc/P4ihjsadiadakhlbhvdshvfXan4\"", 
     "title": "third title", 
     "published": "2015-08-12T22:57:22.010Z", 
     "updated": "2015-08-12T22:57:22.010Z", 

     "url": "https://plus.google.com/+ABCBEHGHIJ/posts/iiuhfdjhfidpnbvcW", 
     "actor": { 
      "displayName": "a name", 
      "url": "https://plus.google.com/210973863758690009009", 
      "image": { 
       "url": "https://lh4.googleusercontent.com/-ihfjbhjbsduj/BAJDHJDSIDKAI/PODSIOUSDIKAAPQ/oBXvlp1aeLQ/photo.jpg?sz=50" 
      }, 
      "verification": { 
       "adHocVerified": "UNKNOWN_VERIFICATION_STATUS" 
      } 
     }, 
     "verb": "post", 
     "object": { 
      "objectType": "note", 
      "actor": { 
       "verification": { 
        "adHocVerified": "UNKNOWN_VERIFICATION_STATUS" 
       } 
      }, 
      "content": " \u003ca rel=\"nofollow\" class=\"ot-hashtag\" href=\"https://plus.google.com/s/IUYDHJDSUGDSHGY\"\u003eIUYDHJDSUGDSHGY\u003c/a\u003e \ufeff", 
      "url": "https://plus.google.com/+ABCBEHGHIJ/posts/iukdjkdowqvcW", 
      "replies": { 
       "totalItems": 0, 
       "selfLink": "https://www.googleapis.com/plus/v1/activities/uihfjbsjkbsfdnfffdfdpokrouh3quig/comments" 
      }, 
      "plusoners": { 
       "totalItems": 0, 
       "selfLink": "https://www.googleapis.com/plus/v1/activities/uihfjbsjkbsfdnfffdfdpokrouh3quig/people/plusoners" 
      }, 
      "resharers": { 
       "totalItems": 0, 
       "selfLink": "https://www.googleapis.com/plus/v1/activities/uihfjbsjkbsfdnfffdfdpokrouh3quig/people/resharers" 
      }, 
      "attachments": [ 
       { 
        "objectType": "photo", 
        "displayName": "Photo 3", 
        "content": "789", 
        "url": "https://plus.google.com/photos/210973863758690009009/albums/6182262671805531297/618654563857564534922", 
        "image": { 
         "url": "https://lh3.googleusercontent.com/-uihfjbsdhgsdilop/VcvPJmJ0bUI/wERRDFFAAAAN8/X6J9fHJVBFDVSFVSak/w506-h750/PicsArt_1438914428134.jpg", 
         "type": "image/jpeg" 
        }, 
        "fullImage": { 
         "url": "https://lh3.googleusercontent.com/-uihfjbsdhgsdilop/VcvPJmJ0bUI/wERRDFFAAAAN8/XyghFGF2TgBak/w562-h562/PicsArt_1438914428134.jpg", 
         "type": "image/jpeg", 
         "height": 562, 
         "width": 562 
        } 
       } 
      ] 
     }, 
     "provider": { 
      "title": "Google+" 
     }, 
     "access": { 
      "kind": "plus#acl", 
      "description": "Public", 
      "items": [ 
       { 
        "type": "public" 
       } 
      ] 
     } 
    }, 
    { 
     "kind": "plus#activity", 
     "etag": "\"gLJioyuhgdugudsgugc/UGHAoodpuskhjhgsdjdbY0\"", 
     "title": "fourth title", 
     "published": "2011-09-26T17:13:14.309Z", 
     "updated": "2011-09-26T17:13:14.309Z", 
     "id": "z12odlnbgmavzdh4k04cgfhxvwrouh3quig", 
     "url": "https://plus.google.com/+ABCBEHGHIJ/posts/R9zieiuhdjghdgBFu", 
     "actor": { 
      "id": "210973863758690009009", 
      "displayName": "a name", 
      "url": "https://plus.google.com/210973863758690009009", 
      "image": { 
       "url": "https://lh4.googleusercontent.com/-ihfjbhjbsduj/AKHDSJHSDGAAI/AUIDHIJGDSHGHAPQ/oBXvlp1aeLQ/photo.jpg?sz=50" 
      }, 
      "verification": { 
       "adHocVerified": "UNKNOWN_VERIFICATION_STATUS" 
      } 
     }, 
     "verb": "post", 
     "object": { 
      "objectType": "note", 
      "actor": { 
       "verification": { 
        "adHocVerified": "UNKNOWN_VERIFICATION_STATUS" 
       } 
      }, 
      "content": "UIHUIGG FJGF GU", 
      "url": "https://plus.google.com/+ABCBEHGHIJ/posts/R9zStuw9BFu", 
      "replies": { 
       "totalItems": 0, 
       "selfLink": "https://www.googleapis.com/plus/v1/activities/oilzdh4k04cgpooiyuewfouh3quig/comments" 
      }, 
      "plusoners": { 
       "totalItems": 1, 
       "selfLink": "https://www.googleapis.com/plus/v1/activities/oilzdh4k04cgpooiyuewfouh3quig/people/plusoners" 
      }, 
      "resharers": { 
       "totalItems": 0, 
       "selfLink": "https://www.googleapis.com/plus/v1/activities/zkjhsdsfgiooi;oilzdh4k04cgpooiyuewfouh3quig/people/resharers" 
      } 
     }, 
     "provider": { 
      "title": "Google+" 
     }, 
     "access": { 
      "kind": "plus#acl", 
      "description": "Public", 
      "items": [ 
       { 
        "type": "public" 
       } 
      ] 
     } 
    }, 
    { 
     "kind": "plus#activity", 
     "etag": "\"oilzdh4k04cgpooiyuewfouh3quig/oilzdh4k04cgpooiyuewfouh3quig\"", 
     "title": "fifth title", 
     "published": "2011-09-26T17:09:23.712Z", 
     "updated": "2011-09-26T17:09:23.712Z", 
     "id": "z13msxkxfnjjvp04p04cgfhxvwrouh3quig", 
     "url": "https://plus.google.com/+ABCBEHGHIJ/posts/RvXF5ufy23n", 
     "actor": { 
      "id": "210973863758690009009", 
      "displayName": "a name", 
      "url": "https://plus.google.com/210973863758690009009", 
      "image": { 
       "url": "https://lh4.googleusercontent.com/-ihfjbhjbsduj/AAAAAAAAAAI/AAAAAAAAAPQ/oilzdh4k04cgpooiyuewfouh3quig/photo.jpg?sz=50" 
      }, 
      "verification": { 
       "adHocVerified": "UNKNOWN_VERIFICATION_STATUS" 
      } 
     }, 
     "verb": "post", 
     "object": { 
      "objectType": "note", 
      "actor": { 
       "verification": { 
        "adHocVerified": "UNKNOWN_VERIFICATION_STATUS" 
       } 
      }, 
      "content": "witout 'ME' it's jst AWESO....\ufeff", 
      "url": "https://plus.google.com/+ABCBEHGHIJ/posts/RvXF5ufy23n", 
      "replies": { 
       "totalItems": 0, 
       "selfLink": "https://www.googleapis.com/plus/v1/activities/oilzdh4k04cgpooiyuewfouh3quig/comments" 
      }, 
      "plusoners": { 
       "totalItems": 0, 
       "selfLink": "https://www.googleapis.com/plus/v1/activities/oilzdh4k04cgpooiyuewfouh3quig/people/plusoners" 
      }, 
      "resharers": { 
       "totalItems": 0, 
       "selfLink": "https://www.googleapis.com/plus/v1/activities/gLJfoiojkdwjkshdikhdhisEc/people/resharers" 
      } 
     }, 
     "provider": { 
      "title": "Google+" 
     }, 
     "access": { 
      "kind": "plus#acl", 
      "description": "Public", 
      "items": [ 
       { 
        "type": "public" 
       } 
      ] 
     } 
    }, 
    { 
     "kind": "plus#activity", 
     "etag": "\"gLJfoiojkdwjkshdikhdhisEc/gLJfoiojkdwjkshdikhdhisEc\"", 
     "title": "sixth title", 
     "published": "2011-09-26T17:07:05.897Z", 
     "updated": "2011-09-26T17:07:05.897Z", 
     "id": "gLJfoiojkdwjkshdikhdhisEc", 
     "url": "https://plus.google.com/+ABCBEHGHIJ/posts/gLJfoiojkdwjkshdikhdhisEc", 
     "actor": { 
      "id": "210973863758690009009", 
      "displayName": "a name", 
      "url": "https://plus.google.com/210973863758690009009", 
      "image": { 
       "url": "https://lh4.googleusercontent.com/-ihfjbhjbsduj/AASKJAKHJGASQAPQ/AASKJAKHJGASQAPQ/gLJfoiojkdwjkshdikhdhisEc/photo.jpg?sz=50" 
      }, 
      "verification": { 
       "adHocVerified": "UNKNOWN_VERIFICATION_STATUS" 
      } 
     }, 
     "verb": "post", 
     "object": { 
      "objectType": "note", 
      "actor": { 
       "verification": { 
        "adHocVerified": "UNKNOWN_VERIFICATION_STATUS" 
       } 
      }, 
      "content": "dere's an xception 2 evry rule, xcept dis 1..\ufeff", 
      "url": "https://plus.google.com/+ABCBEHGHIJ/posts/N6QTZt2XvSR", 
      "replies": { 
       "totalItems": 0, 
       "selfLink": "https://www.googleapis.com/plus/v1/activities/gLJfoiojkdwjkshdikhdhisEc/comments" 
      }, 
      "plusoners": { 
       "totalItems": 0, 
       "selfLink": "https://www.googleapis.com/plus/v1/activities/gLJfoiojkdwjkshdikhdhisEc/people/plusoners" 
      }, 
      "resharers": { 
       "totalItems": 0, 
       "selfLink": "https://www.googleapis.com/plus/v1/activities/gLJfoiojkdwjkshdikhdhisEc/people/resharers" 
      } 
     }, 
     "provider": { 
      "title": "Google+" 
     }, 
     "access": { 
      "kind": "plus#acl", 
      "description": "Public", 
      "items": [ 
       { 
        "type": "public" 
       } 
      ] 
     } 
    } 
] 
} 

это то, что я делаю:

function google_pluss() { 

    $file_dir = strtolower(realpath(APPPATH . '..' . DIRECTORY_SEPARATOR . 'assets')); 
    $json_file = $file_dir . DIRECTORY_SEPARATOR . 'stackoverflow' . '.json'; // I have the file locally... 

    $json_data = json_decode(file_get_contents($json_file)); 

    $data = array(); 

    if (isset($json_data)) { 
     $x = 0; 
     foreach ($json_data->items as $item) { 
      if (isset($item->object->attachments)) { 

       foreach ($item->object->attachments as $attachment) { 
        $data['number'][$x] = $attachment->content; 
        $data['image'][$x] = $attachment->fullImage->url; 
       } 

       $data['title'][$x] = $item->title; 
       $x++; 
      } 
     } 
    } 

    print_r($data); 
} 

это выход я получаю:

Array 
(
[number] => Array 
    (
     [0] => 123 
     [1] => 456 
     [2] => 789 
    ) 

[image] => Array 
    (
     [0] => https://lh5.googleusercontent.com/-2dgjFRSDSDD8/VcyMSDSDSI/BAAHYGHDSJHDSIKA/0XtjIUYDIGIDGerY/11017878_1655020DSDKHSJ612_1878283374SDSDSD30482_n.jpg 
     [1] => https://lh3.googleusercontent.com/-Tvijihjsdbnjgsdupsk/VcfjhjfsbjgsugAI/ApkdlnsdjkbjsdAQM/cyhYX3SifDY/w1024-h768/1024-2006_1011_093752.jpg 
     [2] => https://lh3.googleusercontent.com/-uihfjbsdhgsdilop/VcvPJmJ0bUI/wERRDFFAAAAN8/XyghFGF2TgBak/w562-h562/PicsArt_1438914428134.jpg 
    ) 

[title] => Array 
    (
     [0] => first title 
     [1] => second title 
     [2] => third title 
    ) 

) 

Но , это результат, который мне действительно нужен:

Array 
(
[0] => Array 
    (
     [number] => 123 
     [image] => https://lh5.googleusercontent.com/-2dgjFRSDSDD8/VcyMSDSDSI/BAAHYGHDSJHDSIKA/0XtjIUYDIGIDGerY/11017878_1655020DSDKHSJ612_1878283374SDSDSD30482_n.jpg 
     [title] => first title 
    ) 

[1] => Array 
    (
     [number] => 456 
     [image] => https://lh3.googleusercontent.com/-Tvijihjsdbnjgsdupsk/VcfjhjfsbjgsugAI/ApkdlnsdjkbjsdAQM/cyhYX3SifDY/w1024-h768/1024-2006_1011_093752.jpg 
     [title] => second title 
    ) 

[2] => Array 
    (
     [number] => 789 
     [image] => https://lh3.googleusercontent.com/-uihfjbsdhgsdilop/VcvPJmJ0bUI/wERRDFFAAAAN8/XyghFGF2TgBak/w562-h562/PicsArt_1438914428134.jpg 
     [title] => third title 
    ) 

) 

Я бы очень признателен, если кто-нибудь покажет мне, как этого добиться, спасибо. btw, я использую переменную $x и увеличиваю ее, чтобы остановить цикл, в котором массив не содержит attachments. Я был бы рад, если бы показал, как сделать это аккуратно.

+0

Подсказка: клиентская библиотека Googles PHP сделает вашу жизнь или вспомогательная скважина по крайней мере, вы можете копировать форму кода его. https://github.com/google/google-api-php-client – DaImTo

+0

благодарит @DaImTo за подсказку. Я бы это проверил. – Sam

ответ

1

На первый взгляд, я бы сказал, изменение

 foreach ($item->object->attachments as $attachment) { 
      $data['number'][$x] = $attachment->content; 
      $data['image'][$x] = $attachment->fullImage->url; 
     } 

в

 foreach ($item->object->attachments as $attachment) { 
      $data[$x]['number'] = $attachment->content; 
      $data[$x]['image'] = $attachment->fullImage->url; 
     } 
+0

Удивительный! Это сработало. Thanx для быстрого ответа. – Sam

+0

... пожалуйста, кнопка, о методе '$ x', достаточно ли она достаточно? .. или есть что-то более традиционное/профессиональное? Спасибо. – Sam

+0

Я бы предположил, что есть более аккуратный способ сделать это, но это основной метод, который я использую большую часть времени. –