如何从Google加json php foreach循环获取数据

时间:2015-08-13 17:01:21

标签: php json foreach google-api google-plus

我正在进入一个项目,我试图从json响应中获取信息(再次),这是我从谷歌+获得的。 我需要在使用json响应中的一些信息填充数组后返回一个数组。

[修改] 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": "07012345678\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
    )

)

如果有人告诉我如何实现这一点,我真的很感激,谢谢。 顺便说一句,我使用$x变量并递增它,以停止数组不包含attachments的循环。我也很高兴,如果看到如何做这个整洁。

1 个答案:

答案 0 :(得分: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;
        }