繁体   English   中英

数组差异关联数组

[英]Array difference associative array

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

但是做得不好,请帮助我解决此问题,谢谢

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

array_merge_recursive($invitedfrnds2, $invitedfrnds0);

使用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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM