比较CSV和用户输入的PHP

比较CSV和用户输入的PHP,php,Php,我正在编写一个小脚本,当用户输入他们的ID号时,它将根据外部csv文件进行验证,以检查用户是否存在 $errortext=' '; $sfile = fopen("compch.csv","r"); rewind($sfile); while (!feof($sfile)) { $data2 = fgets($sfile); $splitter2 = explode("|", $data2); if(!in_array($reference,$splitt

我正在编写一个小脚本,当用户输入他们的ID号时,它将根据外部csv文件进行验证,以检查用户是否存在

$errortext=' ';

$sfile = fopen("compch.csv","r");
    rewind($sfile);
    while (!feof($sfile)) {
    $data2 = fgets($sfile);
    $splitter2 = explode("|", $data2);

  if(!in_array($reference,$splitter2))
  {
    $errortext = "Invalid proposal number"; 
     return $errortext; 
  }

 }
此代码的问题在于,如果第一个ID不是用户ID,则循环将被中断,而不是读取下一个条目。
是否有办法编辑循环,使其不断读取ID,如果当前用户ID不存在,则只显示错误消息

如果找到正确的元素,可以使用中断,否则继续:

$errortext = ' ';
$bool = false;
$sfile = fopen("compch.csv","r");
    rewind($sfile);
    while (!feof($sfile)) {
    $data2 = fgets($sfile);
    $splitter2 = explode("|", $data2);

  if(in_array($reference,$splitter2))
  {
    $bool = true;
    break; //YOu exit the while loop
  }

 }//End of while loop
 if ($bool){
  //ID is inside
 }else{
   $errortext = "Invalid proposal number"; 
 }

您可以使用continue;在一个循环中。。。这将跳过该记录并继续下一个记录。。。只需检查ID是否不存在。事实上我也这么做了。然而,结果与下面相同。它拒绝所有条目或接受所有条目。抱歉,我尝试过,但它拒绝了所有条目,并显示消息“无效提案编号”如果我的数据有助于User1 | 100000 User2 | 100001,那么它的结构就是这样的。这可能是因为每个数据之间都有一条特征线:特征线是字符'\n',它可能会干扰代码的行为:explode('|',$data2)=explode('|','User1 | 100000\n')=数组(0=>'User1',1=>'100000\n')和'100000\n'!='100000'. 尝试在每行的ID后添加分隔符