两个Foreach循环比较解决方案

时间:2014-01-03 08:41:37

标签: php instagram

我有两个数组:

第一

"data":  [
     {
      "username": "ishaza_",
      "bio": "All photos by me:$",
      "website": "",
      "full_name": "Shaza",
      "id": "411073318"
    },
     {
      "username": "taylovesrissa",
      "bio": "",
      "website": "",

      "full_name": "Taylor Angell",
      "id": "750547868"
    },
     {
      "username": "a_sh997",
      "bio": "",
      "website": "",

      "full_name": "Ahmed",
      "id": "679088716"
    }
]

第二:

"data":  [
     {
      "username": "ishaza_",
      "bio": "All photos by me:$",
      "website": "",

      "full_name": "Shaza",
      "id": "411073318"
    },
     {
      "username": "taylovesrissa",
      "bio": "",
      "website": "",

      "full_name": "Taylor Angell",
      "id": "750547868"
    },
     {
      "username": "a_sh997",
      "bio": "",
      "website": "",

      "full_name": "Ahmed",
      "id": "6790887163"
    }
]

我想打印那些第一个和第二个都不存在的数据。

我使用了一个foreach循环但它给出了异常结果,就像每个项目被多次打印一样。

我的代码是:

foreach ($UserFollows->data as $entry1) {

    foreach ($UserFollower->data as $entry2) {

        $e1=$entry1->id;
        $e2=$entry2->id;
        if($e1!=$e2) {
            print''.$e1.'</br>';
        }
    }   
}

这里$UserFollows$UserFollower代表两个数组。这个数组来自Instagram API。实际上我想比较两个api的instagram一个是跟随和其他后续并想要打印那些数据哪个没有在api结果中列出。

但我无法理解为什么我的代码会使用foreach循环返回异常结果

2 个答案:

答案 0 :(得分:5)

使用 array_uintersect 计算数组的交集,通过回调函数比较数据。

$result = array_uintersect($UserFollows->data, $UserFollower->data, function($a, $b) {
  return strcmp($a->id, $b->id);
});

答案 1 :(得分:0)

您希望找到差异,但您的代码不会这样做(它每隔$entry1打印n次,其中n $UserFollower->data中的项目数减去{{1}中的项目数匹配给定项目。

尝试这样的事情:

$UserFollower->data