2013-08-01 129 views
1

最初,我的脚本根据放置在URL中的某些参数来获取和解码JSON,然后将这些值插入到数组中并重新编码为JSON。我必须提出两个独立的请求,一个用于facebook和一个两个instagram,并合并输出数据。我的问题是两个数组似乎并不合并,只输出array_merge函数中的最后一个数据集。合并两个数据集PHP

$igjsonData = json_decode((file_get_contents($igurl))); 
$fbjsonData = json_decode((file_get_contents($fburl))); 

$igresponse = array(); 
$igresponse["data"] = array(); 
foreach ($igjsonData->data as $igkey=>$igvalue) {    

     $igdata = array(); 
     $igdata["network"] = "instagramicon.png"; 
     $igdata["createdtime"] = $igvalue->caption->created_time; 
     $igdata["username"] = $igvalue->caption->from->username; 
     $igdata["profileimage"] = $igvalue->caption->from->profile_picture; 
     $igdata["caption"] = $igvalue->caption->text; 
     $igdata["postimage"] = $igvalue->images->standard_resolution->url; 

     array_push($igresponse["data"], $igdata); 
} 

$fbresponse = array(); 
$fbresponse["data"] = array(); 
foreach ($fbjsonData->data as $fbkey=>$fbvalue) {    

     $fbdata = array(); 
     $fbdata["createdtime"] = $fbvalue->created_time; 
     $fbdata["username"] = $fbvalue->from->name;   
     $data["profileimage"] = "profile_picture"; 
     $fbdata["caption"] = $fbvalue->message; 
     $data["postimage"] = "postimage"; 

     array_push($fbresponse["data"], $fbdata); 
} 

$output = array_merge($igresponse, $fbresponse); 
echo $output; 

我需要或者合并后的数据已被重新编码为JSON,或重新编码之前将它们合并为数组,我希望能够在顺序排列的数据创造时间,如果有人知道如何做到这一点。不太确定这里的问题实际上是什么。

我已经部分地得到它的工作,而不是使用'数组'功能,但是仍然想知道如何在我的新数组中创建时间组织。

$output["data"] = array_merge($igresponse, $fbresponse); 
$array = $output["data"]; 
echo json_encode($array); 

回答

0

我排序它如下所示使用以下代码:

$igfbarray = array_merge($igresponse, $fbresponse); 

$sortArray = array(); 

foreach($igfbarray as $created){ 
    foreach($created as $key=>$value){ 
     if(!isset($sortArray[$key])){ 
      $sortArray[$key] = array(); 
     } 
     $sortArray[$key][] = $value; 
    } 
} 

$orderby = "createdtime"; //array key 

array_multisort($sortArray[$orderby],SORT_DESC,$igfbarray); 

$output["data"] = $igfbarray; 

echo json_encode($output); 
0

您正在使用相同的密钥为您的阵列和网站http://php.net/manual/en/function.array-merge.php上提到,最新的阵列将取代之前的一个即可。

如果你想在另一个元素中使用instagram数据,该解决方案可能会改变第二个数组的键“数据”。或者你可以使用array_merge_recursive()。如果你想在同一个元素中的facebook数据和instagram数据,你必须重新命名第二个数组中的所有键。

我使用本实施例为exprimenting:http://phpfiddle.org/main/code/bkc-t76