首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从多维数组中删除重复值

从多维数组中删除重复值
EN

Stack Overflow用户
提问于 2015-05-08 06:55:11
回答 3查看 1.9K关注 0票数 2

如何从PHP多维数组中删除重复值?

示例数组:

代码语言:javascript
复制
   Array
(
    [choice] => Array
        (
            [0] => Array
                (
                    [day] => Monday
                    [value] => Array
                        (
                            [0] => Array
                                (
                                    [name] => BI
                                    [time] => 10:00 
                                    [location] =>  B123
                                )
                            [1] => Array
                                (
                                    [name] => BI
                                    [time] => 11:00 
                                    [location] =>  A123
                                )
                        )
                )

            [1] => Array
                (
                    [day] => Tuesday
                    [value] => Array
                        (
                            [0] => Array
                                (
                                    [name] => BI
                                    [time] => 10:00 
                                    [location] =>  B123
                                )
                            [1] => Array
                                (
                                    [name] => BI
                                    [time] => 11:00 
                                    [location] =>  A123
                                )
                        )
                    )
        )
)

我想删除那些与重复的name。所以我只想每天留一门课。

到目前为止我的代码是:

代码语言:javascript
复制
$taken = array();
foreach($subject_list['choice'][0]["value"] as $key =>$item )
{ 
    if(!in_array($item['name'], $taken)) 
    {
        $taken[] = $item['name'];
    }else 
    {
        unset($flight_list['choice'][0]["value"][$key]);
    }

}

上面代码的输出(这显然是错误的):

代码语言:javascript
复制
Array
(
    [choice] => Array
        (
            [0] => Array
                (
                    [day] => Monday
                    [value] => Array
                        (
                            [0] => Array
                                (
                                    [name] => BI
                                    [time] => 10:00 
                                    [location] =>  B123
                                )
                        )
                )

            [1] => Array
                (
                    [day] => Tuesday
                    [value] => Array
                        (
                            [0] => Array
                                (
                                    [name] => BI
                                    [time] => 10:00 
                                    [location] =>  B123
                                )
                            [1] => Array
                                (
                                    [name] => BI
                                    [time] => 11:00 
                                    [location] =>  A123
                                )
                        )
                    )
        )
)

任何人都可以帮助我,如何在Tuesday中删除同一个类的Tuesday

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-05-08 07:05:45

如果希望在每个value批处理中保留第一组唯一值,则只需为此创建一个临时容器即可。如果您已经按了它,那么在收集之后,不要处理任何事情,使用foreach&引用覆盖批处理:

代码语言:javascript
复制
foreach($subject_list['choice'] as &$items) {
    $temp = array(); // temporary container for current iteration
    foreach($items['value'] as $value) {
        if(!isset($temp[$value['name']])) { // if its new
            $temp[$value['name']] = $value; // push the batch using the key name
        }
    }
    $items['value'] = $temp; // apply unique value in the end of this batch
}

样本输出

票数 3
EN

Stack Overflow用户

发布于 2015-05-08 06:57:34

其中,$array是一个php变量,您的数组将在其中出现。

代码语言:javascript
复制
 $array = array_map("unserialize", array_unique(array_map("serialize", $array)));
票数 0
EN

Stack Overflow用户

发布于 2015-05-08 06:58:07

只需一个快速的google,从多维数组中删除副本:

代码语言:javascript
复制
<?php
function super_unique($array)
{
  $result = array_map("unserialize", array_unique(array_map("serialize", $array)));

  foreach ($result as $key => $value)
  {
    if ( is_array($value) )
    {
      $result[$key] = super_unique($value);
    }
  }

  return $result;
}
?>
票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30117590

复制
相关文章

相似问题

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