首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP比较2个多维数组,根据键值去重

PHP比较2个多维数组,根据键值去重
EN

Stack Overflow用户
提问于 2013-02-23 19:40:02
回答 2查看 2.9K关注 0票数 0

我有2个数组,例如

OldMembers:

代码语言:javascript
复制
Array (
  [0] => Array
    (
        [time] => 1361612421
        [memberid] => 90
    )

  [1] => Array
    (
        [time] => 1361614422
        [memberid] => 96
    )

  [2] => Array
    (
        [time] => 1361617423
        [memberid] => 108
    )
)

和NewMembers

代码语言:javascript
复制
Array (
  [0] => Array
    (
        [time] => 1361618411
        [memberid] => 103
    )

  [1] => Array
    (
        [time] => 1361618443
        [memberid] => 129
    )
  [2] => Array
    (
        [time] => 1361618463
        [memberid] => 96
    )
)

根据密钥成员is从NewMembers中删除重复项的最佳方法是什么?例如,在这种情况下,我需要从NewMembers中删除第二个数组,因为在位置1的OldMembers中已经存在成员in 96 ...我只需要从NewMembers数组中删除该实例?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-02-23 19:49:54

试一试

代码语言:javascript
复制
array_unique( array_merge($oldMember, $newMember) );

没有测试,但希望它能工作。

测试代码。

代码语言:javascript
复制
<?php
$oldMember = array
(
    '0' => array
    (
        'time' => 1361612421,
        'memberid' => 90
    ),
    '1' => array
    (
        'time' => 1361614422,
        'memberid' => 96
    ),
    '2' => array
    (
        'time' => 1361617423,
        'memberid' => 108
    )
);

$newMember = array
(
    '0' => array
    (
        'time' => 1361618411,
        'memberid' => 103
    ),
    '1' => array
    (
        'time' => 1361618443,
        'memberid' => 129
    ),
    '2' => array
    (
        'time' => 1361618463,
        'memberid' => 96
    )
);


$id_arr = array();
$final_arr = array();

checkmemberidArray($oldMember, $id_arr, $final_arr);
checkmemberidArray($newMember, $id_arr, $final_arr);

function checkmemberidArray($arr, &$id_arr, &$final_arr)
{
    foreach ($arr as $key => $value)
    {
        if (!in_array($value['memberid'], $id_arr))
        {
            $id_arr[] = $value['memberid'];
            $final_arr[] = $value;
        }
    }
}

echo "<pre>";
print_r($final_arr);
echo "</pre>";
?>
票数 2
EN

Stack Overflow用户

发布于 2013-02-23 19:49:06

当然不是最好的答案,但如果没有其他人提出任何建议,至少你会有这个建议。

代码语言:javascript
复制
foreach($newmembers as $newmemberId => $newmember) {
    foreach($oldmembers as $oldmember) {
        if($oldmember['memberid'] == $newmember['memberid']) {
            unset($newmembers[$newmemberId]);
            break;
        }
    }
}

当然,$newmembers和$oldmembers是您的数组。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15040129

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档