2016-03-02 117 views
2

首先,对不起我的英文。 现在我从.json解析数据,并且遇到了问题,通过使用foreach,我只能解析一次属性数据。 我需要检索src_big超过1倍迭代json数据php

"src_big":"http:\/\/cs7004.vk.me\/v7004692\/1af45\/QRt-0dPZ8qg.jpg" 

"src_big":"http:\/\/cs7004.vk.me\/v7004767\/1ab37\/3M52LmF_dY8.jpg" 

例如:

{ 
    "response":[ 
     { 
     "id":14867, 
     "from_id":-65923388, 
     "to_id":-65923388, 
     "date":1456947602, 
     "post_type":"post", 
     "text":"Горячие клавиши Windows 10", 
     "attachment":{ 
      "type":"photo", 
      "photo":{ 
       "pid":404384423, 
       "aid":223686536, 
       "owner_id":-65923388, 
       "user_id":100, 
       "src":"http:\/\/cs7004.vk.me\/v7004692\/1af44\/5zhYes1I7xg.jpg", 
       "src_big":"http:\/\/cs7004.vk.me\/v7004692\/1af45\/QRt-0dPZ8qg.jpg", 
       "src_small":"http:\/\/cs7004.vk.me\/v7004692\/1af43\/msvfzwgm5tc.jpg", 
       "width":604, 
       "height":302, 
       "text":"Наука<br>http:\/\/vk.com\/public65923388", 
       "created":1456235510, 
       "access_key":"d1cff88abc28e29b28" 
      } 
     }, 
     "attachments":[ 
      { 
       "type":"photo", 
       "photo":{ 
        "pid":404384423, 
        "aid":223686536, 
        "owner_id":-65923388, 
        "user_id":100, 
        "src":"http:\/\/cs7004.vk.me\/v7004692\/1af44\/5zhYes1I7xg.jpg", 
        "src_big":"http:\/\/cs7004.vk.me\/v7004692\/1af45\/QRt-0dPZ8qg.jpg", 
        "src_small":"http:\/\/cs7004.vk.me\/v7004692\/1af43\/msvfzwgm5tc.jpg", 
        "width":604, 
        "height":302, 
        "text":"Наука<br>http:\/\/vk.com\/public65923388", 
        "created":1456235510, 
        "access_key":"d1cff88abc28e29b28" 
       } 
      }, 
      { 
       "type":"photo", 
       "photo":{ 
        "pid":404384428, 
        "aid":223686536, 
        "owner_id":-65923388, 
        "user_id":100, 
        "src":"http:\/\/cs7004.vk.me\/v7004365\/1a9ff\/3tEb3pm-bBA.jpg", 
        "src_big":"http:\/\/cs7004.vk.me\/v7004365\/1aa00\/LIQOncL-su8.jpg", 
        "src_small":"http:\/\/cs7004.vk.me\/v7004365\/1a9fe\/TKchasZfhNo.jpg", 
        "width":604, 
        "height":585, 
        "text":"Наука<br>http:\/\/vk.com\/public65923388", 
        "created":1456235512, 
        "access_key":"e9370296ef33bebb7a" 
       } 
      }, 
      { 
       "type":"photo", 
       "photo":{ 
        "pid":404384439, 
        "aid":223686536, 
        "owner_id":-65923388, 
        "user_id":100, 
        "src":"http:\/\/cs7004.vk.me\/v7004767\/1ab36\/1IqODh-OmS0.jpg", 
        "src_big":"http:\/\/cs7004.vk.me\/v7004767\/1ab37\/3M52LmF_dY8.jpg", 
        "src_small":"http:\/\/cs7004.vk.me\/v7004767\/1ab35\/lOR1yvNeE8Y.jpg", 
        "width":478, 
        "height":604, 
        "text":"Наука<br>http:\/\/vk.com\/public65923388", 
        "created":1456235514, 
        "access_key":"8cc1048e72e29b8ced" 
       } 
      }, 
      { 
       "type":"photo", 
       "photo":{ 
        "pid":404384504, 
        "aid":223686536, 
        "owner_id":-65923388, 
        "user_id":100, 
        "src":"http:\/\/cs7004.vk.me\/v7004474\/1b385\/wdi9GlRth20.jpg", 
        "src_big":"http:\/\/cs7004.vk.me\/v7004474\/1b386\/I5PY-gN_xa4.jpg", 
        "src_small":"http:\/\/cs7004.vk.me\/v7004474\/1b384\/HkzVl-hsZUo.jpg", 
        "width":604, 
        "height":419, 
        "text":"Наука<br>http:\/\/vk.com\/public65923388", 
        "created":1456235537, 
        "access_key":"5d5ca96b04e91e2744" 
       } 
      }, 
      { 
       "type":"photo", 
       "photo":{ 
        "pid":404384509, 
        "aid":223686536, 
        "owner_id":-65923388, 
        "user_id":100, 
        "src":"http:\/\/cs7004.vk.me\/v7004452\/1a619\/nDL7Q9dJhxs.jpg", 
        "src_big":"http:\/\/cs7004.vk.me\/v7004452\/1a61a\/PaJXcLeD5Aw.jpg", 
        "src_small":"http:\/\/cs7004.vk.me\/v7004452\/1a618\/-h36pYEcpPY.jpg", 
        "width":604, 
        "height":292, 
        "text":"Наука<br>http:\/\/vk.com\/public65923388", 
        "created":1456235540, 
        "access_key":"ae318183e5303414e9" 
       } 
      } 
     ], 
     "comments":{ 
      "count":0 
     }, 
     "likes":{ 
      "count":127 
     }, 
     "reposts":{ 
      "count":45 
     } 
     } 
    ] 
} 
+0

你如何使用json_decode?你是基于json创建一个数组还是将它用作stdclass? – Tyr

+0

$ records = json_decode($ records_json,true); – ATIKON

回答

1

如果您使用的是PHP > 5.1.3那么您可以使用迭代器。有一个看看下面的解决方案:

$json = '{ 
    "response":[ 
     { 
     "id":14867, 
     "from_id":-65923388, 
     "to_id":-65923388, 
     "date":1456947602, 
     "post_type":"post", 
     "text":"Горячие клавиши Windows 10", 
     "attachment":{ 
      "type":"photo", 
      "photo":{ 
       "pid":404384423, 
       "aid":223686536, 
       "owner_id":-65923388, 
       "user_id":100, 
       "src":"http:\/\/cs7004.vk.me\/v7004692\/1af44\/5zhYes1I7xg.jpg", 
       "src_big":"http:\/\/cs7004.vk.me\/v7004692\/1af45\/QRt-0dPZ8qg.jpg", 
       "src_small":"http:\/\/cs7004.vk.me\/v7004692\/1af43\/msvfzwgm5tc.jpg", 
       "width":604, 
       "height":302, 
       "text":"Наука<br>http:\/\/vk.com\/public65923388", 
       "created":1456235510, 
       "access_key":"d1cff88abc28e29b28" 
      } 
     }, 
     "attachments":[ 
      { 
       "type":"photo", 
       "photo":{ 
        "pid":404384423, 
        "aid":223686536, 
        "owner_id":-65923388, 
        "user_id":100, 
        "src":"http:\/\/cs7004.vk.me\/v7004692\/1af44\/5zhYes1I7xg.jpg", 
        "src_big":"http:\/\/cs7004.vk.me\/v7004692\/1af45\/QRt-0dPZ8qg.jpg", 
        "src_small":"http:\/\/cs7004.vk.me\/v7004692\/1af43\/msvfzwgm5tc.jpg", 
        "width":604, 
        "height":302, 
        "text":"Наука<br>http:\/\/vk.com\/public65923388", 
        "created":1456235510, 
        "access_key":"d1cff88abc28e29b28" 
       } 
      }, 
      { 
       "type":"photo", 
       "photo":{ 
        "pid":404384428, 
        "aid":223686536, 
        "owner_id":-65923388, 
        "user_id":100, 
        "src":"http:\/\/cs7004.vk.me\/v7004365\/1a9ff\/3tEb3pm-bBA.jpg", 
        "src_big":"http:\/\/cs7004.vk.me\/v7004365\/1aa00\/LIQOncL-su8.jpg", 
        "src_small":"http:\/\/cs7004.vk.me\/v7004365\/1a9fe\/TKchasZfhNo.jpg", 
        "width":604, 
        "height":585, 
        "text":"Наука<br>http:\/\/vk.com\/public65923388", 
        "created":1456235512, 
        "access_key":"e9370296ef33bebb7a" 
       } 
      }, 
      { 
       "type":"photo", 
       "photo":{ 
        "pid":404384439, 
        "aid":223686536, 
        "owner_id":-65923388, 
        "user_id":100, 
        "src":"http:\/\/cs7004.vk.me\/v7004767\/1ab36\/1IqODh-OmS0.jpg", 
        "src_big":"http:\/\/cs7004.vk.me\/v7004767\/1ab37\/3M52LmF_dY8.jpg", 
        "src_small":"http:\/\/cs7004.vk.me\/v7004767\/1ab35\/lOR1yvNeE8Y.jpg", 
        "width":478, 
        "height":604, 
        "text":"Наука<br>http:\/\/vk.com\/public65923388", 
        "created":1456235514, 
        "access_key":"8cc1048e72e29b8ced" 
       } 
      }, 
      { 
       "type":"photo", 
       "photo":{ 
        "pid":404384504, 
        "aid":223686536, 
        "owner_id":-65923388, 
        "user_id":100, 
        "src":"http:\/\/cs7004.vk.me\/v7004474\/1b385\/wdi9GlRth20.jpg", 
        "src_big":"http:\/\/cs7004.vk.me\/v7004474\/1b386\/I5PY-gN_xa4.jpg", 
        "src_small":"http:\/\/cs7004.vk.me\/v7004474\/1b384\/HkzVl-hsZUo.jpg", 
        "width":604, 
        "height":419, 
        "text":"Наука<br>http:\/\/vk.com\/public65923388", 
        "created":1456235537, 
        "access_key":"5d5ca96b04e91e2744" 
       } 
      }, 
      { 
       "type":"photo", 
       "photo":{ 
        "pid":404384509, 
        "aid":223686536, 
        "owner_id":-65923388, 
        "user_id":100, 
        "src":"http:\/\/cs7004.vk.me\/v7004452\/1a619\/nDL7Q9dJhxs.jpg", 
        "src_big":"http:\/\/cs7004.vk.me\/v7004452\/1a61a\/PaJXcLeD5Aw.jpg", 
        "src_small":"http:\/\/cs7004.vk.me\/v7004452\/1a618\/-h36pYEcpPY.jpg", 
        "width":604, 
        "height":292, 
        "text":"Наука<br>http:\/\/vk.com\/public65923388", 
        "created":1456235540, 
        "access_key":"ae318183e5303414e9" 
       } 
      } 
     ], 
     "comments":{ 
      "count":0 
     }, 
     "likes":{ 
      "count":127 
     }, 
     "reposts":{ 
      "count":45 
     } 
     } 
    ] 
}'; 
$json_array = json_decode($json, true); 
$iterator = new RecursiveIteratorIterator(new RecursiveArrayIterator($json_array)); 
$src_big = array(); 
foreach ($iterator as $key => $value) { 
     //check key and dulicate entry 
     if($key =='src_big' && in_array($value, $src_big) === false){ 
      $src_big[] = $value; 
     } 
} 

print_r($src_big); 

输出

Array 
(
    [0] => http://cs7004.vk.me/v7004692/1af45/QRt-0dPZ8qg.jpg 
    [1] => http://cs7004.vk.me/v7004365/1aa00/LIQOncL-su8.jpg 
    [2] => http://cs7004.vk.me/v7004767/1ab37/3M52LmF_dY8.jpg 
    [3] => http://cs7004.vk.me/v7004474/1b386/I5PY-gN_xa4.jpg 
    [4] => http://cs7004.vk.me/v7004452/1a61a/PaJXcLeD5Aw.jpg 
) 
+0

我喜欢你的解决方案,如何防止第一元素的dublicate?)[0] => http://cs7004.vk.me/v7004692/1af45/QRt-0dPZ8qg.jpg [1] => http:// cs7004 .vk.me/v7004692/1af45/QRt-0dPZ8qg.jpg – ATIKON

+1

@ATIKON更新答案添加条件来检查数组中的重复。现在看看。 –

+0

ty非常适合您的解决方案)它工作得很好 – ATIKON

1

您可以尝试json_decode作为评论提到试试这里是你的问题的一个例子。

<?PHP 


$myJson = <<<JSON 
{"response":[{"id":14867,"from_id":-65923388,"to_id":-65923388,"date":1456947602,"post_type":"post","text":"Горячие клавиши Windows 10","attachment":{"type":"photo","photo":{"pid":404384423,"aid":223686536,"owner_id":-65923388,"user_id":100,"src":"http:\/\/cs7004.vk.me\/v7004692\/1af44\/5zhYes1I7xg.jpg","src_big":"http:\/\/cs7004.vk.me\/v7004692\/1af45\/QRt-0dPZ8qg.jpg","src_small":"http:\/\/cs7004.vk.me\/v7004692\/1af43\/msvfzwgm5tc.jpg","width":604,"height":302,"text":"Наука<br>http:\/\/vk.com\/public65923388","created":1456235510,"access_key":"d1cff88abc28e29b28"}},"attachments":[{"type":"photo","photo":{"pid":404384423,"aid":223686536,"owner_id":-65923388,"user_id":100,"src":"http:\/\/cs7004.vk.me\/v7004692\/1af44\/5zhYes1I7xg.jpg","src_big":"http:\/\/cs7004.vk.me\/v7004692\/1af45\/QRt-0dPZ8qg.jpg","src_small":"http:\/\/cs7004.vk.me\/v7004692\/1af43\/msvfzwgm5tc.jpg","width":604,"height":302,"text":"Наука<br>http:\/\/vk.com\/public65923388","created":1456235510,"access_key":"d1cff88abc28e29b28"}},{"type":"photo","photo":{"pid":404384428,"aid":223686536,"owner_id":-65923388,"user_id":100,"src":"http:\/\/cs7004.vk.me\/v7004365\/1a9ff\/3tEb3pm-bBA.jpg","src_big":"http:\/\/cs7004.vk.me\/v7004365\/1aa00\/LIQOncL-su8.jpg","src_small":"http:\/\/cs7004.vk.me\/v7004365\/1a9fe\/TKchasZfhNo.jpg","width":604,"height":585,"text":"Наука<br>http:\/\/vk.com\/public65923388","created":1456235512,"access_key":"e9370296ef33bebb7a"}},{"type":"photo","photo":{"pid":404384439,"aid":223686536,"owner_id":-65923388,"user_id":100,"src":"http:\/\/cs7004.vk.me\/v7004767\/1ab36\/1IqODh-OmS0.jpg","src_big":"http:\/\/cs7004.vk.me\/v7004767\/1ab37\/3M52LmF_dY8.jpg","src_small":"http:\/\/cs7004.vk.me\/v7004767\/1ab35\/lOR1yvNeE8Y.jpg","width":478,"height":604,"text":"Наука<br>http:\/\/vk.com\/public65923388","created":1456235514,"access_key":"8cc1048e72e29b8ced"}},{"type":"photo","photo":{"pid":404384504,"aid":223686536,"owner_id":-65923388,"user_id":100,"src":"http:\/\/cs7004.vk.me\/v7004474\/1b385\/wdi9GlRth20.jpg","src_big":"http:\/\/cs7004.vk.me\/v7004474\/1b386\/I5PY-gN_xa4.jpg","src_small":"http:\/\/cs7004.vk.me\/v7004474\/1b384\/HkzVl-hsZUo.jpg","width":604,"height":419,"text":"Наука<br>http:\/\/vk.com\/public65923388","created":1456235537,"access_key":"5d5ca96b04e91e2744"}},{"type":"photo","photo":{"pid":404384509,"aid":223686536,"owner_id":-65923388,"user_id":100,"src":"http:\/\/cs7004.vk.me\/v7004452\/1a619\/nDL7Q9dJhxs.jpg","src_big":"http:\/\/cs7004.vk.me\/v7004452\/1a61a\/PaJXcLeD5Aw.jpg","src_small":"http:\/\/cs7004.vk.me\/v7004452\/1a618\/-h36pYEcpPY.jpg","width":604,"height":292,"text":"Наука<br>http:\/\/vk.com\/public65923388","created":1456235540,"access_key":"ae318183e5303414e9"}}],"comments":{"count":0},"likes":{"count":127},"reposts":{"count":45}}]} 
JSON; 

$myObject = json_decode($myJson); 
foreach($myObject->response AS $index=>$item) 
{ 
    //print_r($item); //Remove comment to see your item 
    foreach($item->attachments AS $attachment) 
    { 
     echo "attachment:"; 
     print_r($attachment); 
    } 
} 

和工作的例子就是在这里http://ideone.com/8WRxcB

希望这有助于

1

反正你使用探索源JSON,问题来自于它的结构:

  • 现有一号src_big的成员attachment对象
  • 所有其他的都是attachments数组中对象的成员

所以,你必须:

  • 变化的JSON结构(如果您已经手就可以了),使其保持一致,即,第一对象attachment改变为attachments数组对象
  • 的或迭代明显寻找每个上述结构中的