php显示最后一次出现在文本文件中

时间:2012-11-21 11:26:25

标签: php while-loop

当行是相同的序列号时,我只需要显示 last occurence

这些是我的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 个答案:

答案 0 :(得分: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'];
}

答案 1 :(得分: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']);
  }

答案 2 :(得分: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);

答案 3 :(得分: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;