2017-09-21 14 views
0

問題があります解決方法がわかりません:apiを使ってウェブサイトにいくつかのFacebookの投稿を読み込みます。投稿には動画があるので、その動画をiFrameに読み込みたいのですが、正しい動画にはそれが所属する投稿が読み込まれている必要があります。2つの配列とそのデータをマージする

オブジェクトには、ページからのすべてのビデオが含まれていますが、その情報は2つのオブジェクトの内部に格納されているため、より簡単に言えます。postsオブジェクトには投稿メッセージなどが含まれます。

私は私の考えはそうのように両方のオブジェクト/配列を組み合わせることだったので、1ループ内の両方のオブジェクトからの情報を使用したい:

<?php 
$json_object = file_get_contents("https://graph.facebook.com/v2.10/pageid/posts?fields=full_picture,message,picture,story,permalink_url,updated_time,from&access_token=myaccesstoken"); 

$feedarray = json_decode($json_object); 

$json_objectvideo = file_get_contents("https://graph.facebook.com/v2.10/pageid/videos?fields=embed_html,permalink_url&access_token=myaccesstoken"); 

$feedvideo = json_decode($json_objectvideo); 

$merged = array_merge($feedarray->data, $feedvideo->data); 
?> 

私は合併$を印刷するとき、それは最初にすべてを一つの大きなアレイを示します投稿してからすべての動画を(期待通りに)この配列をループすると、正しいembed_htmlフィールドに正しい投稿がロードされていることを確認するにはどうすればよいですか?私は彼らが何とか彼らのIDで接続されていることに気づいた。ポストIDは、例えば次のようになります。

367712570004555_1287302444712225 

動画IDは次のように見えますが:私は、最後の部分を取るのであれば、私は、アンダースコアのポストIDを爆発する必要が

1287302444712225 

、両方のIDは同じです。その情報を知っている、私はどのようにループ内の正しい投稿と正しいembed_htmlを読み込むために使用することができますか?ここで明確にする

postsオブジェクト(ofcourseのマージされていない)の一部である:

{ 
    "data": [ 
     { 
     "created_time": "2017-09-12T20:58:21+0000", 
     "message": "Vandaag bij Vivienne Westwood Boutique Amsterdam de lichtreclame gemonteerd. Mooi project om te mogen doen.\n\u2705 maatwerk\n\u2705 kwaliteit\n\u2705 betaalbaar\n\ud83d\udc4b Benieuwd naar de kosten? We helpen je graag!\n- Reclame & Internet - #ontwerp > #productie > #montage", 
     "id": "367712570004555_1287302444712225" 
     }, 

そしてvideosオブジェクト:

{ 
    "data": [ 
     { 
     "embed_html": "\u003Ciframe src=\"https://www.facebook.com/plugins/video.php?href=https\u00253A\u00252F\u00252Fwww.facebook.com\u00252Fwebsite\u00252Fvideos\u00252F1287302444712225\u00252F&width=1280\" width=\"1280\" height=\"720\" style=\"border:none;overflow:hidden\" scrolling=\"no\" frameborder=\"0\" allowTransparency=\"true\" allowFullScreen=\"true\">\u003C/iframe>", 
     "permalink_url": "/website/videos/1287302444712225/", 
     "id": "1287302444712225" 
     }, 

答えて

0

私はこれを試してみましたが、あなたがしようとしている願っていますあなたの質問と同じですが、そのIDごとに投稿とビデオをマージします。

<?php 

$posts = '{ 
    "data": [ 
     { 
     "created_time": "2017-09-12T20:58:21+0000", 
     "message": "Vandaag bij Vivienne Westwood Boutique Amsterdam de lichtreclame gemonteerd. Mooi project om te mogen doen.\n\u2705 maatwerk\n\u2705 kwaliteit\n\u2705 betaalbaar\n\ud83d\udc4b Benieuwd naar de kosten? We helpen je graag!\n- Reclame & Internet - #ontwerp > #productie > #montage", 
     "id": "367712570004555_1287302444712225" 
     } 
     ] 
    }'; 
$videos = '{ 
     "data": [ 
     { 
     "embed_html": "\u003Ciframe src=\"https://www.facebook.com/plugins/video.php?href=https\u00253A\u00252F\u00252Fwww.facebook.com\u00252Fwebsite\u00252Fvideos\u00252F1287302444712225\u00252F&width=1280\" width=\"1280\" height=\"720\" style=\"border:none;overflow:hidden\" scrolling=\"no\" frameborder=\"0\" allowTransparency=\"true\" allowFullScreen=\"true\">\u003C/iframe>", 
     "permalink_url": "/website/videos/1287302444712225/", 
     "id": "1287302444712225" 
     } 
    ] 
}'; 

$x = json_decode($posts, true)['data']; 
$y = json_decode($videos, true)['data']; 

foreach($x as $key => $value) { 
    $id = explode('_', $value['id'])[1]; 
    foreach($y as $key => $vide){ 
     if($vide['id'] == $id) { 
      $combinedArr[] = array_merge($vide, $value); 
     } 
    } 
} 
print_r($combinedArr); 

?> 

関連する問題