在PHP中创建数组以验证重复循环中的重复CPF

在PHP中创建数组以验证重复循环中的重复CPF,php,Php,我的主要目标是使用PHP将Excel电子表格中的数据导入Mysql 我完成了这个目标,现在我可以将所有列从Excel导入到相应的数据库表中 我的下一个目标是做一些验证 比如说 验证两个不同客户是否存在相同的CPF 下面是Excel电子表格的一个示例 中央公积金是每个巴西公民的唯一身份证件 下面是生成plan excel列和行数据的函数示例 private function import_file($file) { $path = $file; $ob

我的主要目标是
使用PHP
Excel电子表格中的
数据导入
Mysql

我完成了这个目标,现在我可以将所有列从Excel导入到相应的数据库表中

我的下一个目标是做一些
验证

比如说

验证两个不同客户是否存在相同的
CPF

下面是Excel电子表格的一个示例

中央公积金是每个巴西公民的唯一身份证件

下面是生成plan excel列和行数据的函数示例

private function import_file($file)
    {
        $path   = $file;
        $object = PHPExcel_IOFactory::load($path);

        foreach($object->getWorksheetIterator() as $worksheet)
        {
            $highestRow    = $worksheet->getHighestRow();
            $highestColumn = $worksheet->getHighestColumn();

            $person_array_testing = [];
            for($row = 2; $row <= $highestRow; $row++)
            {
                # array testing
                $cpf_cnpj = $worksheet->getCellByColumnAndRow(0, $row)->getValue();
                $name     = $worksheet->getCellByColumnAndRow(1, $row)->getValue();
                $contract = $worksheet->getCellByColumnAndRow(2, $row)->getValue();
                $invoice  = $worksheet->getCellByColumnAndRow(3, $row)->getValue();
                $document = $worksheet->getCellByColumnAndRow(4, $row)->getValue();
                $value    = $worksheet->getCellByColumnAndRow(5, $row)->getValue();
                $expiry   = $worksheet->getCellByColumnAndRow(6, $row)->getValue();
                $address  = $worksheet->getCellByColumnAndRow(7, $row)->getValue();
                $phone    = $worksheet->getCellByColumnAndRow(8, $row)->getValue();
                $email    = $worksheet->getCellByColumnAndRow(9, $row)->getValue();

                // print 1
                // pr($cpf_cnpj);
                // pr($name);

                if( ! empty($cpf_cnpj))
                {
                    $keys = [$cpf_cnpj];
                    $new_array = array_fill_keys($keys, $name);
                    // print 2
                    pr($new_array); 
                }                
                # array testing
            }
        }
    }
更新
我认为它不起作用,因为数组不能有重复的键

下面是如何从PHP返回、使用或打印的图片 分别打印功能代码中的1和2

是的,你是对的。数组不包含相同的键。但您可以使用多维数组来缩短此问题

但正如您所说,在数据库中导出数据。因此,不能将
CPF
键用作主键或唯一键


您对验证的想法是正确的,但是您没有实现它

您可以尝试以下方法:

$validationaray=[];
如果(!空($cpf_cnpj)){
如果(数组\u键\u存在($cpf\u cnpj,$validationArray){
返回false;
}
$validationaray[$cpf_cnpj]=$name;
}
或者,如果您不想在每次复制时中断处理,可以将复制存储在不同的阵列中,并在导入后进行处理:

$validationaray=[];
$replicationsarray=[];
如果(!空($cpf_cnpj)){
如果(数组\u键\u存在($cpf\u cnpj,$validationArray){
$replicationsarray[$cpf_cnpj]=$name;
}否则{
$validationaray[$cpf_cnpj]=$name;
}
}

Hi,我返回的是错误:array\u key\u exists():第一个参数应该是字符串或整数错误消息非常清楚:传递给函数的变量
$cpf\u cnpj
不包含字符串。从电子表格中获取变量后,在进行验证之前,是否对其执行了操作?我更改了变量的数据类型
cpf\u cnpj
to string并获得结果,但将变量validationArray和replicationarray移出了循环。非常感谢您的帮助!
[
    '11111111177' => 'MARIA DE LOURDES CAETANO',
    '11111111177' => 'ADRIENE FARIA MARTINS CONRADO DOS SANTOS'
]