[英]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.