2015-06-16 53 views
1

如何獲取PHP中兩個對象數組之間的交集結果。如何在PHP中交叉對象數組?

例如,

$陣列1

Array 
(
    [0] => stdClass Object 
     (
      [id] => 2 
      [influencer_id] => 2 
      [follower_id] => 1 
     ) 

) 

$數組2是價值,

Array 
(
    [0] => stdClass Object 
     (
      [id] => 2 
      [influencer_id] => 1 
      [follower_id] => 2 
     ), 
    [1] => stdClass Object 
     (
      [id] => 3 
      [influencer_id] => 3 
      [follower_id] => 2 
     ), 

) 

所以,我想在$結果

Array 
(
    [0] => stdClass Object 
     (
      [id] => 2 
      [influencer_id] => 2 
      [follower_id] => 1 
     ) 

) 

什麼是最好的方法來得到它?

在此先感謝!

+0

你的意思的$數組2的對象[0]有$數組1 [0]相同的值?如果是的話,我認爲這是一種誤解。 – Javakid

+0

如果$ array2中的任何元素與應該在結果中的具有$ array1的任何元素匹配,則爲No.注意元素在這裏是對象。 – cse031sust02

回答

0

嘗試使用array_intersect

array_intersect()返回一個包含存在於所有的參數的ARRAY1的所有值的數組。請注意,鍵被保留。

+0

它給出了這個錯誤 「類stdClass的對象無法轉換爲字符串」 – cse031sust02

+1

nah比較對象,閱讀本文http://stackoverflow.com/questions/2834607/array-intersect-for-object-array- PHP – Sherlock

1

你可以做,使用array_uintersect function和手動定義您的回調比較函數:

$arr1 = json_decode('[{"id":2,"influencer_id":2,"follower_id":1}]'); 
$arr2 = json_decode('[{"id":2,"influencer_id":2,"follower_id":1},{"id":3,"influencer_id":3,"follower_id":2}]'); 

$arr3 = array_uintersect($arr1, $arr2, function ($e1, $e2) { 
    if($e1->id == $e2->id && $e1->influencer_id == $e2->influencer_id && $e1->follower_id == $e2->follower_id) { 
     return 0; 
    } else { 
     return 1; 
    } 
}); 

var_dump($arr3);