如何删除数组中的重复项

Posted

技术标签:

【中文标题】如何删除数组中的重复项【英文标题】:How to remove duplicate in array 【发布时间】:2017-11-12 13:44:27 【问题描述】:

我想显示每月的带宽使用情况, 有 2 个用户都在 6 月登录 这是我的代码:

<?php foreach ($data as $row):

            $date = $row['acctstarttime'];
            $d = date_parse_from_format("Y-m-d", $date);

             $monthNum  = $d["month"];
             $dateObj   = DateTime::createFromFormat('!m', $monthNum);
             $monthName = $dateObj->format('F');                
                        ?>

                <td><?php echo $monthName;?></td>
                </tr>
<?php endforeach;?>

输出是: - 六月 - 六月 - 七月

我需要的输出:- June- July

我尝试将查询更改为:

Function showData() 
     

    $this->db->distinct('radacct.acctstarttime'); 
    $this->db->from('radacct');
    $this->db->where('radacct.acctstarttime','y-06-d-h');
    $query = $this->db->get();


    If ($query->num_rows()>0) 
     
      Return $query->result(); 
     
    Else 
     
     Return array(); 
     
 

但它什么也没改变(我的查询错了吗?)

我也试过了:foreach (array_unique($data) as $row)

但它删除了七月

&lt;?php print_r($row['acctstarttime'])?&gt;的输出 是 : 2017-06-08 04:12:00 2017-06-08 04:12:00 2017-07-12 05:00:00

【问题讨论】:

请显示您要处理的数组的示例 看起来$this-&gt;db-&gt;distinct('radacct.acctstarttime'); 正在使用所有时间组件,而您只需要月份? 是的,先生。奈杰尔,其中一个数据是“2017-06-08 04:12:00”我只想要“Y-06-D-H”和“06”部分 对不起先生。 Riggs 你是说这个吗? 'foreach ($data as $row)' 不要将print_r($the_array) 的输出添加到您的问题中 【参考方案1】:

试试这个:

    <?php 
    $month = [];
    foreach ($data as $row):
        if(!in_array($d["month"], $month)) 
            $month[] = $d['month'];
            $date = $row['acctstarttime'];
            $d = date_parse_from_format("Y-m-d", $date);

            $monthNum  = $d["month"];
            $dateObj   = DateTime::createFromFormat('!m', $monthNum);
            $monthName = $dateObj->format('F');                
            ?>

            <td><?php echo $monthName;?></td>
            </tr>

            <?php 
        
     endforeach;
  ?>

更新:

    $month = array(); 
    foreach ($data as $row):
       $date = $row['acctstarttime'];
       $d = date_parse_from_format("Y-m-d", $date);
       $monthNum  = $d["month"];
       $dateObj   = DateTime::createFromFormat('!m', $monthNum);
       $monthName = $dateObj->format('F');  
       if(!in_array($monthName, $month)) 
            $month[] = $monthName;
            echo $monthName;
       
     endforeach;

【讨论】:

试过了,修改了,但是输出还是:-June -June -July Uhm... 如果那是您的代码是不可能的,您能否提供一个示例并将例如发布到 phpfiddle? 非常感谢您的努力先生,这是链接:phpfiddle.org/main/code/ykcq-3d16 更新答案,请立即尝试@IhsanMabroChickenz 有效!! :D 非常感谢先生

以上是关于如何删除数组中的重复项的主要内容,如果未能解决你的问题,请参考以下文章

如何删除数组中的重复项

Flash as3 如何删除数组中的重复项?

从数组中删除重复的对象

NSSet 在使用 SetWithArray 时如何比较数组中的值以删除重复项

如何从二维数组中删除重复项? [关闭]

如何从 Javascript 中的数组中删除重复项?