Schlo_50 Posted May 28, 2008 Share Posted May 28, 2008 I have a list in a .DAT file which gets added to every so often. I'd like to be able to print out the last 3 rows of data but can't seem to be able to do it without printing the whole file or only the last entry. Could somebody help please? $lines = file("data/options.DAT"); foreach ($lines as $line) { $data[$key] = explode("|", $line); $name = trim($data[$key][0]); $pid = trim($data[$key][1]); print "$name - $pid<br />"; } Thanks in advance! Link to comment https://forums.phpfreaks.com/topic/107605-solved-find-the-last-3-entries/ Share on other sites More sharing options...
MadTechie Posted May 28, 2008 Share Posted May 28, 2008 try <?php $lines = file("data/options.DAT"); $K=0; $last = count($lines) - 3; foreach ($lines as $line) { $K++; $data[$key] = explode("|", $line); $name = trim($data[$key][0]); $pid = trim($data[$key][1]); if($K >= $last) print "$name - $pid<br />"; } ?> Link to comment https://forums.phpfreaks.com/topic/107605-solved-find-the-last-3-entries/#findComment-551513 Share on other sites More sharing options...
deadonarrival Posted May 28, 2008 Share Posted May 28, 2008 For optimisation, I'd put the if($K >= $last) before the explode No point exploding it if you aren't going to use it <?php $lines = file("data/options.DAT"); $K=0; $last = count($lines) - 3; foreach ($lines as $line) { $K++; if($K >= $last) { $data[$key] = explode("|", $line); $name = trim($data[$key][0]); $pid = trim($data[$key][1]); print "$name - $pid<br />"; }//if }//foreach ?> Saves three function calls and several references if it's no the last one. Your parse time will thank you if you ever get a very full .dat file Link to comment https://forums.phpfreaks.com/topic/107605-solved-find-the-last-3-entries/#findComment-551522 Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.