0

当行是相同的序列号时,我只需要显示最后一次出现。

这些是我的 txt 文件的行:

ID| NAME | SERIAL
1;  John;  00001;
2;  Mike;  00002;
3;  John;  00001;


  // open file
  $file = fopen("Data.txt","r");

  // loop lines
  while(!feof($file)){
      $line =  fgets($file);
      $explode_line = explode(";",$line);
      $id = $explode_line[0];
      $serial = $explode_line[1];

      if ($serial == $_POST['serial'])) {
          echo $id . ' - ' . $serial;
      }
  }

  fclose($file);

结果必须是:
3;约翰; 00001;

而不是:
1;约翰; 00001;
3;约翰; 00001;

4

4 回答 4

0

最简单的方法是将数据存储在行数组中;或者,如果您只需要一行,则需要一个元组:

$file = fopen("Data.txt","r");

$result = false;

// loop lines
while(!feof($file))
{
  // Use trim here
  $line =  trim(fgets($file));

  $explode_line = explode(";",$line);
  $id = $explode_line[0];
  $serial = $explode_line[1];
  if ($serial == $_POST['serial']))
  {
      $result = array('id' => $id, 'serial' => $serial);
  }
}
fclose($file);

if ($result)
{
  echo $result['id'] . ' - ' . $result['serial'];
}
于 2012-11-21T11:33:33.840 回答
0

只需覆盖$myId在循环之外定义的变量。这将始终包含循环完成后的最后一次出现。

  $file = fopen("Data.txt","r");

  $myId = '';

  while(!feof($file)){
      $line =  fgets($file);
      $explode_line = explode(";",$line);
      $id = $explode_line[0];
      $serial = $explode_line[1];

      if ($serial == $_POST['serial'])) {
          $myId = $id;
      }
  }

  fclose($file);

  if($myId != '')
  {
      echo htmlspecialchars($myId). ' - ' . htmlspecialchars($_POST['serial']);
  }
于 2012-11-21T11:33:48.463 回答
0

尝试这个/那是您的变体,尽可能少地修改/:

 // open file
  $file = fopen("Data.txt","r");
 $str = '';     

  // loop lines
  while(!feof($file)){
      $line =  fgets($file);
      $explode_line = explode(";",$line);
      $id = $explode_line[0];
      $serial = $explode_line[1];

      if ($serial == $_POST['serial'])) {
          $str = $id . ' - ' . $serial;
      }
  }

  echo $str;

  fclose($file);
于 2012-11-21T11:34:25.087 回答
0

你可以试试;

  // open file
  $file = fopen("Data.txt","r");

  // loop lines
  while(!feof($file)){
      $line =  fgets($file);
      $explode_line = explode(";",$line);
      $id = $explode_line[0];
      $serial = $explode_line[1];
      if ($serial == $_POST['serial'])) {
        $ret_id = $id;
        $ret_serial = $serial;
        }         
      }
   fclose($file);
   echo $ret_id . ' - ' . $ret_serial;
于 2012-11-21T11:37:22.150 回答