PHP:如何计算CSV文件中无效电子邮件的数量

PHP:如何计算CSV文件中无效电子邮件的数量,php,email,cakephp,count,Php,Email,Cakephp,Count,我将csv文件从VueJS前端上传到cakephp API。在这些CSV文件中,存在需要验证的电子邮件。但我的问题出现在这之后,我想计算CSV文件中无效的电子邮件数量,然后将该值放入数据库 下面是我的代码:我使用“count()”进行了测试,但这不起作用,因为我认为我做得不对 公共函数上传() { //邮寄? $this->myMethodError(['post']); //读取参数 $uploadFileName=$this->request->getData('uploadFileName

我将csv文件从VueJS前端上传到cakephp API。在这些CSV文件中,存在需要验证的电子邮件。但我的问题出现在这之后,我想计算CSV文件中无效的电子邮件数量,然后将该值放入数据库

下面是我的代码:我使用“count()”进行了测试,但这不起作用,因为我认为我做得不对

公共函数上传()
{
//邮寄?
$this->myMethodError(['post']);
//读取参数
$uploadFileName=$this->request->getData('uploadFileName')?$this->request->getData('uploadFileName'):“”;
$uploadFile=$this->request->getData('uploadFile')?$this->request->getData('uploadFile'):“”;
//是否上载了.csv扩展名?
$uploadFileExtension=pathinfo($this->request->data['name'])['extension'];//.csv?
if(!(在数组中($uploadFileExtension,['csv'])){
$this->myError(['error'=>'error File extension:'。$uploadFileExtension.'..需要csv']);
}
//将文件复制到保留库中,并注明日期
$destinationFile=TMP.“.date(“YmdHis”).“\u annonceur\u marque\u campagne.”.$uploadFileExtension;
如果(移动上传的文件($uploadFile['tmp\U name'],$destinationFile)){
//---------------
//Read.CSV
//---------------
if($handle=fopen($destinationFile,“r”)!==FALSE){
//-------------------
//读取数据
//--------------------
$numrow=0;
while(($data=fgetcsv($handle,1000,“,”)!==FALSE){
$numrow++;
如果(计数($data)!=13){
$this->myError(['error'=>'Structure de fichier invalide détectée ligne'.$numrow]);
出口
}
如果($numrow==1){
继续;
}//关于炒科隆干酪
如果($data[4]==“”)
{
$this->myError(['error'=>'Le champs email est obligatoire.ligne.$numrow]);
出口
}
}
//在数据库中插入
$uploadTable=TableRegistry::get('Locationsets');
$upload=$uploadTable->newEntity();
如果(!filter\u var($data[4],filter\u VALIDATE\u EMAIL)==true){
$upload->nbr_errors_email=count(filter_var($data[4],filter_VALIDATE_email));
}
$upload->name=$uploadFileName;
$upload->csv\u files\u dir=$destinationFile;
如果($uploadTable->save($upload)){
$uploadId=$uploadId->id;
}否则{
$this->myError(['error'=>'Insert failed']);
}
//返回Json格式
$this->myOutput([$data]);
}否则{
$this->myError(['error'=>'读取csv文件失败']);
}
}否则{
$this->myError(['error'=>'Csv文件上载失败']);
}
}
这段代码在数据库中添加了1,但这不是我应该得到的结果

希望你能帮忙

编辑:

$data


向我们显示
$data
的内容,或者至少显示其中的一个示例
$data[4]
是包含电子邮件的字段。里面有两封坏邮件,总共37行。看起来,
$data
是数据库的一行。因此,当您使用字符串
数据[4]
时,它将返回1。你应该对所有数据的结果求和。很有趣,但我认为这是因为它在找到第一封无效电子邮件时停止,并且在找到之后不会增加。如何解决它?@Mathias好的,那么告诉我们,
$data[4]
实际上是什么样子。在您的页面上使用
print\r()
,并使用返回更新您的问题。