ukscotth Posted January 23, 2012 Share Posted January 23, 2012 Hi, I have a function that pulls a random line from a text file and I would like to change it so it pulls a random line from a text file that contains a certain date, heres the current function : function RandomLine($filename) { $lines = file($filename) ; return $lines[array_rand($lines)] ; } Any ideas on the best way to do this ? Many thanks. Quote Link to comment https://forums.phpfreaks.com/topic/255593-adding-a-where-to-array_rand/ Share on other sites More sharing options...
requinix Posted January 23, 2012 Share Posted January 23, 2012 Go through the lines in the file and keep track of (=store in an array) the lines you actually want to choose from. Then array_rand() on that. Quote Link to comment https://forums.phpfreaks.com/topic/255593-adding-a-where-to-array_rand/#findComment-1310322 Share on other sites More sharing options...
Psycho Posted January 23, 2012 Share Posted January 23, 2012 Just to add to his comment function RandomLine($filename, $dateStr) { $matchingLines = array(); foreach(file($filename) as $line) { if(strpos($line, $dateStr) !== false) { $matchingLines[] = $line } return $matchingLines[array_rand($matchingLines)] ; } Although, I guess you could also unset() a line from the original array if the date doesn't exist. If the process take any significant amount of time to run, you might look at that as an option. Quote Link to comment https://forums.phpfreaks.com/topic/255593-adding-a-where-to-array_rand/#findComment-1310336 Share on other sites More sharing options...
ukscotth Posted January 23, 2012 Author Share Posted January 23, 2012 ok great thanks. Il give it a try Quote Link to comment https://forums.phpfreaks.com/topic/255593-adding-a-where-to-array_rand/#findComment-1310357 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.