2016-12-19 55 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 

希望这可以帮助你。