【问题标题】:Merge Two Data Sets PHP合并两个数据集 PHP
【发布时间】:2013-08-01 22:48:17
【问题描述】:

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

$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 之后合并数据,或者将它们合并为数组,在重新编码之前,我希望能够按创建时间的顺序排列数据,如果有人的话也知道该怎么做。不太确定这里的问题实际上是什么。

我已经部分使用了“数组”函数,但仍然想知道如何在我的新数组中按 createdtime 进行组织。

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

【问题讨论】:

    标签: php arrays merge json


    【解决方案1】:

    您对两个阵列使用相同的密钥,并且正如网站 http://php.net/manual/en/function.array-merge.php 上所述,最新的阵列将替换之前的阵列。

    如果您想要 instagram 数据在不同的元素中,解决方案可能是更改第二个数组的键“数据”。或者您可以使用 array_merge_recursive()。如果您希望 facebook 数据和 instagram 数据在同一个元素中,则必须重命名第二个数组中的所有键。

    我用这个例子做实验:http://phpfiddle.org/main/code/bkc-t76

    【讨论】:

      【解决方案2】:

      我使用以下代码对其进行了如下排序:

      $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); 
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-10-07
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多