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

最も簡単な方法は、データを行の配列に格納することです。または、1行だけが必要な場合は、1つのタプル:

$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");

  // 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 に答える
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 に答える