首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于高值点的多维数组去重

基于高值点的多维数组去重
EN

Stack Overflow用户
提问于 2009-11-01 22:10:54
回答 1查看 977关注 0票数 1

我绞尽脑汁想出一个解决办法。我可以找到很多解决方案来删除二维数组中的重复项,但我需要删除其中一个值低于另一个值的重复项。下面是数组:

代码语言:javascript
复制
Array
(
    [basketball] => Array
        (
            [0] => stdClass Object
                (
                    [id] => 2
                    [username] => Beans
                    [points] => 30
                )

            [1] => stdClass Object
                (
                    [id] => 314
                    [username] => slights
                    [points] => 20
                )

            [2] => stdClass Object
                (
                    [id] => 123
                    [username] => gibb54
                    [points] => 5
                )

        )

    [soccer] => Array
        (
            [0] => stdClass Object
                (
                    [id] => 2
                    [username] => Beans
                    [points] => 95
                )

            [1] => stdClass Object
                (
                    [id] => 49
                    [username] => sans
                    [points] => 65
                )

            [2] => stdClass Object
                (
                    [id] => 122
                    [username] => peano
                    [points] => 50
                )

            [3] => stdClass Object
                (
                    [id] => 174
                    [username] => fordb
                    [points] => 30
                )

            [4] => stdClass Object
                (
                    [id] => 112
                    [username] => danc
                    [points] => 30
                )


        )

)

如您所见,用户ID 2,Beans是篮球和足球的第一选择。因为他们有更多的足球积分,我需要删除他们的篮球条目,使ID为314,轻视0值。

我需要不断地这样做,直到没有用户为任何主数组值的0值为止。

我尝试了foreach解决方案的各种组合,但一无所获。我认为while循环会更合适,但我不知道要测试什么条件。

有什么想法吗?!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-11-02 03:51:45

我将遍历您的数据并创建一个字典,其中键是用户ids,值是附加了sport的适当用户对象。然后,您可以使用sport数据遍历这个已消除重复数据的数组,以确定放置每个用户的位置,从而重新构建示例数据数组结构。

要创建已消除重复数据的阵列,请使用以下命令:

代码语言:javascript
复制
$deDupedData = array();
foreach ($data as $sport => $users) {
    foreach ($users as $user) {
        if (isset($deDupedData[$user->id])) {
            if ($user->points > $deDupedData[$user->id]->points) {
                $deDupedData[$user->id]->sport = $sport;
                $deDupedData[$user->id]->points = $user->points;
            } 
        } else {
            $modifiedUser = $user;
            $modifiedUser->sport = $sport;
            $deDupedData[$user->id] = $modifiedUser;
        }
    }
}  
// Now reconstruct your array...
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1657255

复制
相关文章

相似问题

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