我正在报告约会活动,并且包括一项将原始数据导出到KPI背后的功能。这些原始数据以CSV格式存储,我需要检查是否已输入可能重复的咨询。
根据患者ID和约会ID为每行数据分配唯一的访问ID。原始数据包含30列数据,只需要对其中的7列执行重复检查。我已经导入了CSV文件,并创建了一个如下所示的数组作为第一条记录,然后添加其余内容。
$mds = array(
$unique_visit_id => array(
$appt_date,
$dob,
$site,
$CCG,
$GP,
$appt_type,
$treatment_scheme
)
);
我需要扫描$mds
数组并返回仅包含$unique_visit_id
的任何重复数组的数组。
例如键1111、2222和5555所有引用数组的所有七个值都包含相同的值,那么我需要返回2222和5555。
我尝试搜索,但未提出任何可行的方法。
谢谢
答案 0 :(得分:0)
这是我一直使用的,仍在验证(数据集非常大),但到目前为止似乎仍能按预期运行
$handle = fopen("../reports/mds_full_export.csv", "r");
$visits = array();
while($data = fgetcsv($handle,0,',','"') !== FALSE){
$key = $data['unique_visit_id'];
$value = $data['$appt_date'].$data['$dob'].$data['$site'].$data['$CCG'].$data['$GP'].$data['$appt_type'].$data['$treatment_scheme'];
$visits[$key] = $value;
}
$visits = asort($visits);
$previous = "";
$dupes = array();
foreach($visits as $id => $visit){
if(strcmp($previous, $visit) == 0){
$dupes[] = $id;
}
$previous = $visit;
}
return $dupes;