当行是相同的序列号时,我只需要显示 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;
答案 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;