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! Quote 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 />"; } ?> Quote 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 Quote 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
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.