0
$invitedfrnds0 = Array 
            ( [0] => Array 
                ( 
                    [fb_user_id] => 100000058716604 
                    [accept_status] => 0 
                ) 
             [1] => Array 
                ( 
                    [fb_user_id] => 100000063917115 
                    [accept_status] => 0 
                ) 
            [2] => Array 
                ( 
                    [fb_user_id] => 100000261361844 
                    [accept_status] => 0 
                ) 

            [3] => Array 
                ( 
                    [fb_user_id] => 100005502043347 
                    [accept_status] => 0 
                ) 

            ) 

$invitedfrnds2 =    Array 
                ( 
                    [0] => Array 
                        ( 
                            [fb_user_id] => 100005502043347 
                            [accept_status] => 2 
                        ) 
                )

这里我有两个数组$invitedfrnds0,并且这两个数组$invitedfrnds2中有一些匹配fb_user_id,如果找到任何匹配我需要从第一个数组中删除匹配的记录。之后我需要合并这两个数组

结果数组看起来像这样。

$resultarray = Array 
                ( [0] => Array 
                    ( 
                        [fb_user_id] => 100000058716604 
                        [accept_status] => 0 
                    ) 
                 [1] => Array 
                    ( 
                        [fb_user_id] => 100000063917115 
                        [accept_status] => 0 
                    ) 
                [2] => Array 
                    ( 
                        [fb_user_id] => 100000261361844 
                        [accept_status] => 0 
                    ) 

                [3] => Array 
                    ( 
                        [fb_user_id] => 100005502043347 
                            [accept_status] => 2 
                    ) 

                ) 

我为此搜索了很多,尝试了一些

 $resultarray = array_diff($invitedfrnds0,$invitedfrnds2); 
 $resultarray = array_map('array_diff_assoc', $invitedfrnds0, $invitedfrnds2);

但是没有弄好,请帮我解决这个问题,谢谢

4

2 回答 2

0

使用array_udiff你可以做到这一点。

$invitedfrnds0 = array(
    array('fb_user_id' => 100000058716604, 'accept_status' => 0),
    array('fb_user_id' => 100000063917115, 'accept_status' => 0),
    array('fb_user_id' => 100000261361844, 'accept_status' => 0),
    array('fb_user_id' => 100005502043347, 'accept_status' => 0),
);

$invitedfrnds2 = array(
    array('fb_user_id' => 100005502043347, 'accept_status' => 2),
);


// remove all matched values.
$result = array_udiff($invitedfrnds0, $invitedfrnds2, function($a, $b)
    {
    return $a['fb_user_id'] - $b['fb_user_id'];
    });

// add values from the second array.
$result = array_merge($result, $invitedfrnds2);
var_dump($result);
于 2015-03-11T02:01:42.997 回答
0

你必须使用array_merge_recursive(),而不是array_diff()

array_merge_recursive($invitedfrnds2, $invitedfrnds0);
于 2014-02-06T18:22:09.047 回答