Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在多维数组中查找重复项的键_Php_Arrays - Fatal编程技术网

Php 如何在多维数组中查找重复项的键

Php 如何在多维数组中查找重复项的键,php,arrays,Php,Arrays,我正在报告约会活动,并包含一个导出KPI背后原始数据的功能。这些原始数据存储为CSV,我需要检查是否输入了可能重复的咨询 根据患者ID和预约ID为每行数据分配一个唯一的就诊ID。原始数据包含30列数据,只需对其中7列执行重复检查。我已经导入了CSV,并为第一条记录创建了一个数组,如下所示,然后将rest附加到 $mds = array( $unique_visit_id => array( $appt_date, $dob, $s

我正在报告约会活动,并包含一个导出KPI背后原始数据的功能。这些原始数据存储为CSV,我需要检查是否输入了可能重复的咨询

根据患者ID和预约ID为每行数据分配一个唯一的就诊ID。原始数据包含30列数据,只需对其中7列执行重复检查。我已经导入了CSV,并为第一条记录创建了一个数组,如下所示,然后将rest附加到

$mds = array(
    $unique_visit_id => array(
        $appt_date, 
        $dob, 
        $site, 
        $CCG, 
        $GP, 
        $appt_type, 
        $treatment_scheme
    )
);
我需要的是扫描
$mds
数组,并返回一个数组,其中只包含
$unique\u visit\u id
,以查找任何重复的数组

e、 g.键1111、2222和5555都引用了所有七个值都包含相同值的数组,那么我需要返回2222和5555

我尝试过搜索,但没有找到任何有效的方法


谢谢

这就是我所做的,仍然在验证(数据集非常大),但到目前为止似乎仍在按预期运行

$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;

到目前为止,您已经尝试了什么,请分享您的一些代码。。。为什么1111比2222和5555更重要?你打算如何处理这份名单(你是否需要比被骗者身份证更多的信息)?显示你的代码。请给我们看一些你尝试过的东西。这将有助于我们更好地理解您的问题。如果您将所有这些值连接在一起,并将它们存储在一个额外的字段中,那么检查这七个字段中的“组合”唯一性将变得更加容易。如果随后按该额外字段的内容对数组进行排序,则可以随后循环数据,并检查当前记录的值是否与前一个记录的值相同-如果是,则知道当前记录是重复的。[…][…]如果结果是哪些记录很重要(必须是2222和5555,而不是1111和2222,或者1111和5555),那么您需要按照两个标准进行排序,首先是串联的“7-in-1”值,其次是决定这些记录顺序的值。