如何删除数组中的重复项
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)
但它删除了七月
<?php print_r($row['acctstarttime'])?>
的输出
是 : 2017-06-08 04:12:00 2017-06-08 04:12:00 2017-07-12 05:00:00
【问题讨论】:
请显示您要处理的数组的示例 看起来$this->db->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 非常感谢先生以上是关于如何删除数组中的重复项的主要内容,如果未能解决你的问题,请参考以下文章