2016-12-19 85 views
-2

這個數組的foreachJSON_decode在PHP

{"user": {"username": "pian___", "connected_fb_page": null, "follows": {"count": 392}, "requested_by_viewer": false, "followed_by": {"count": 3213}, "country_block": null, "has_requested_viewer": false, "external_url_linkshimmed": null, "follows_viewer": true, "profile_pic_url_hd": "https://scontent-sin6-1.cdninstagram.com/t51.2885-19/s320x320/12935153_283927491939445_911290443_a.jpg", "profile_pic_url": "https://scontent-sin6-1.cdninstagram.com/t51.2885-19/s150x150/12935153_283927491939445_911290443_a.jpg", "is_private": false, "full_name": "newbie", "media": {"count": 2, "page_info": {"has_previous_page": false, "start_cursor": "1233303150505827739", "end_cursor": "1215833196294643512", "has_next_page": false}, "nodes": [{"code": "BEdkq5aRR2b", "dimensions": {"width": 1080, "height": 828}, "comments_disabled": false, "owner": {"id": "1410694422"}, "comments": {"count": 149}, "caption": "Mati satu tumbuh seribu. Kartini mungkin sudah tiada, namun semangat juangnya tidak boleh padam begitu saja. Maju terus para Kartini muda. Selamat hari Kartini\n.\n~ 21'4'16 Hari Kartini .", "likes": {"count": 580}, "date": 1461241214, "thumbnail_src": "https://scontent-sin6-1.cdninstagram.com/t51.2885-15/s640x640/sh0.08/e35/c126.0.828.828/14360137_321090301587067_4196521787967668224_n.jpg?ig_cache_key=MTIzMzMwMzE1MDUwNTgyNzczOQ%3D%3D.2.c", "is_video": false, "id": "1233303150505827739", "display_src": "https://scontent-sin6-1.cdninstagram.com/t51.2885-15/e35/14360137_321090301587067_4196521787967668224_n.jpg?ig_cache_key=MTIzMzMwMzE1MDUwNTgyNzczOQ%3D%3D.2"}, {"code": "BDfgdmrRR84", "dimensions": {"width": 1080, "height": 810}, "comments_disabled": false, "owner": {"id": "1410694422"}, "comments": {"count": 18}, "caption": "Jogja 2K16 \ud83d\udc81\ud83d\udcaa #jogja #candiborobudur #candiprambanan #candi #yogyakarta #mencari #keberadaan #nevada :'v", "likes": {"count": 127}, "date": 1459158633, "thumbnail_src": "https://scontent-sin6-1.cdninstagram.com/t51.2885-15/s640x640/sh0.08/e35/c135.0.810.810/14474382_1187975291263026_6316075023123611648_n.jpg?ig_cache_key=MTIxNTgzMzE5NjI5NDY0MzUxMg%3D%3D.2.c", "is_video": false, "id": "1215833196294643512", "display_src": "https://scontent-sin6-1.cdninstagram.com/t51.2885-15/e35/14474382_1187975291263026_6316075023123611648_n.jpg?ig_cache_key=MTIxNTgzMzE5NjI5NDY0MzUxMg%3D%3D.2"}]}, "blocked_by_viewer": false, "has_blocked_viewer": false, "followed_by_viewer": false, "is_verified": false, "id": "1410694422", "biography": "\ud83d\udccdIndonesia", "external_url": null}} 

我需要的 '代碼' 的結果,是這樣的:

BEdkq5aRR2b,BDfgdmrRR84 

u能幫助^ _^

+1

那麼,你嘗試過'json_decode'嗎?你看到了什麼? –

+3

歡迎來到SO。請注意,SO不是代碼寫入服務。在提出問題之前,請展示您的嘗試。除了'foreach'之外,您可能還想嘗試'array_map'以快速將值提取到數組中。 – SOFe

+0

如果您尚未創建[mcve],您可能需要快速瀏覽一下。這將有助於我們爲您提供更好的答案。 – Henders

回答

1

讓我們看到了美化版本的JSON:

{ 
    "user": { 
     "username": "pian___", 
     "connected_fb_page": null, 
     "follows": { 
      "count": 392 
     }, 
     "requested_by_viewer": false, 
     "followed_by": { 
      "count": 3213 
     }, 
     "country_block": null, 
     "has_requested_viewer": false, 
     "external_url_linkshimmed": null, 
     "follows_viewer": true, 
     "profile_pic_url_hd": "https://scontent-sin6-1.cdninstagram.com/t51.2885-19/s320x320/12935153_283927491939445_911290443_a.jpg", 
     "profile_pic_url": "https://scontent-sin6-1.cdninstagram.com/t51.2885-19/s150x150/12935153_283927491939445_911290443_a.jpg", 
     "is_private": false, 
     "full_name": "newbie", 
     "media": { 
      "count": 2, 
      "page_info": { 
       "has_previous_page": false, 
       "start_cursor": "1233303150505827739", 
       "end_cursor": "1215833196294643512", 
       "has_next_page": false 
      }, 
      "nodes": [ 
       { 
        "code": "BEdkq5aRR2b", 
        "dimensions": { 
         "width": 1080, 
         "height": 828 
        }, 
        "comments_disabled": false, 
        "owner": { 
         "id": "1410694422" 
        }, 
        "comments": { 
         "count": 149 
        }, 
        "caption": "Mati satu tumbuh seribu. Kartini mungkin sudah tiada, namun semangat juangnya tidak boleh padam begitu saja. Maju terus para Kartini muda. Selamat hari Kartini\n.\n~ 21'4'16 Hari Kartini .", 
        "likes": { 
         "count": 580 
        }, 
        "date": 1461241214, 
        "thumbnail_src": "https://scontent-sin6-1.cdninstagram.com/t51.2885-15/s640x640/sh0.08/e35/c126.0.828.828/14360137_321090301587067_4196521787967668224_n.jpg?ig_cache_key=MTIzMzMwMzE1MDUwNTgyNzczOQ%3D%3D.2.c", 
        "is_video": false, 
        "id": "1233303150505827739", 
        "display_src": "https://scontent-sin6-1.cdninstagram.com/t51.2885-15/e35/14360137_321090301587067_4196521787967668224_n.jpg?ig_cache_key=MTIzMzMwMzE1MDUwNTgyNzczOQ%3D%3D.2" 
       }, 
       { 
        "code": "BDfgdmrRR84", 
        "dimensions": { 
         "width": 1080, 
         "height": 810 
        }, 
        "comments_disabled": false, 
        "owner": { 
         "id": "1410694422" 
        }, 
        "comments": { 
         "count": 18 
        }, 
        "caption": "Jogja 2K16 #jogja #candiborobudur #candiprambanan #candi #yogyakarta #mencari #keberadaan #nevada :'v", 
        "likes": { 
         "count": 127 
        }, 
        "date": 1459158633, 
        "thumbnail_src": "https://scontent-sin6-1.cdninstagram.com/t51.2885-15/s640x640/sh0.08/e35/c135.0.810.810/14474382_1187975291263026_6316075023123611648_n.jpg?ig_cache_key=MTIxNTgzMzE5NjI5NDY0MzUxMg%3D%3D.2.c", 
        "is_video": false, 
        "id": "1215833196294643512", 
        "display_src": "https://scontent-sin6-1.cdninstagram.com/t51.2885-15/e35/14474382_1187975291263026_6316075023123611648_n.jpg?ig_cache_key=MTIxNTgzMzE5NjI5NDY0MzUxMg%3D%3D.2" 
       } 
      ] 
     }, 
     "blocked_by_viewer": false, 
     "has_blocked_viewer": false, 
     "followed_by_viewer": false, 
     "is_verified": false, 
     "id": "1410694422", 
     "biography": "Indonesia", 
     "external_url": null 
    } 
} 

我們可以看到t帽子您正在尋找位於->user->media->nodes的節點,所以我們可以用json_decode分析數據,並使用->下井對象巢來獲取節點的數組:

$nodes = json_decode($jsonData)->user->media->nodes; 

然後對每個節點我們要收集code屬性,所以我們映射節點陣列到陣列的代碼使用array_map

$codes = array_map(function($node){ 
    return $node->code; 
}, $nodes); 

然後我們可以使用implode加入陣列片放入一個字符串:

$output = implode(",", $codes); 
0
<?php 

// your json string 
$json = '{"user": {"username": "pian___", "connected_fb_page": null, "follows": {"count": 392}, "requested_by_viewer": false, "followed_by": {"count": 3213}, "country_block": null, "has_requested_viewer": false, "external_url_linkshimmed": null, "follows_viewer": true, "profile_pic_url_hd": "https://scontent-sin6-1.cdninstagram.com/t51.2885-19/s320x320/12935153_283927491939445_911290443_a.jpg", "profile_pic_url": "https://scontent-sin6-1.cdninstagram.com/t51.2885-19/s150x150/12935153_283927491939445_911290443_a.jpg", "is_private": false, "full_name": "newbie", "media": {"count": 2, "page_info": {"has_previous_page": false, "start_cursor": "1233303150505827739", "end_cursor": "1215833196294643512", "has_next_page": false}, "nodes": [{"code": "BEdkq5aRR2b", "dimensions": {"width": 1080, "height": 828}, "comments_disabled": false, "owner": {"id": "1410694422"}, "comments": {"count": 149}, "caption": "Mati satu tumbuh seribu. Kartini mungkin sudah tiada, namun semangat juangnya tidak boleh padam begitu saja. Maju terus para Kartini muda. Selamat hari Kartini\n.\n~ 21\'4\'16 Hari Kartini .", "likes": {"count": 580}, "date": 1461241214, "thumbnail_src": "https://scontent-sin6-1.cdninstagram.com/t51.2885-15/s640x640/sh0.08/e35/c126.0.828.828/14360137_321090301587067_4196521787967668224_n.jpg?ig_cache_key=MTIzMzMwMzE1MDUwNTgyNzczOQ%3D%3D.2.c", "is_video": false, "id": "1233303150505827739", "display_src": "https://scontent-sin6-1.cdninstagram.com/t51.2885-15/e35/14360137_321090301587067_4196521787967668224_n.jpg?ig_cache_key=MTIzMzMwMzE1MDUwNTgyNzczOQ%3D%3D.2"}, {"code": "BDfgdmrRR84", "dimensions": {"width": 1080, "height": 810}, "comments_disabled": false, "owner": {"id": "1410694422"}, "comments": {"count": 18}, "caption": "Jogja 2K16 \ud83d\udc81\ud83d\udcaa #jogja #candiborobudur #candiprambanan #candi #yogyakarta #mencari #keberadaan #nevada :\'v", "likes": {"count": 127}, "date": 1459158633, "thumbnail_src": "https://scontent-sin6-1.cdninstagram.com/t51.2885-15/s640x640/sh0.08/e35/c135.0.810.810/14474382_1187975291263026_6316075023123611648_n.jpg?ig_cache_key=MTIxNTgzMzE5NjI5NDY0MzUxMg%3D%3D.2.c", "is_video": false, "id": "1215833196294643512", "display_src": "https://scontent-sin6-1.cdninstagram.com/t51.2885-15/e35/14474382_1187975291263026_6316075023123611648_n.jpg?ig_cache_key=MTIxNTgzMzE5NjI5NDY0MzUxMg%3D%3D.2"}]}, "blocked_by_viewer": false, "has_blocked_viewer": false, "followed_by_viewer": false, "is_verified": false, "id": "1410694422", "biography": "\ud83d\udccdIndonesia", "external_url": null}}'; 


// 1) Decode your json string 
$json_decoded = json_decode($json); 
//var_dump($json_decoded); 


// 2) Get the part you want, in your case, the nodes in user->media 
$nodes = $json_decoded ->user->media->nodes; 
//var_dump($nodes); 

// Temporary var to retain the codes 
$codes = array(); 

foreach($nodes as $node) 
{ 

    $codes[]=$node->code; 

} 

//var_dump($codes); 


// Your output 
echo implode("," , $codes); 

// Will print: BEdkq5aRR2b,BDfgdmrRR84 

希望這可以幫助你。