在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'
]