On Tuesday, 5 April 2011 at 16:14, Jim Lucas wrote:
On 4/5/2011 7:07 AM, Kirk Bailey wrote:
> > OK gang, to spew a single line from a file of fortune cookies, I want to 
> > read it
> > and echo one line. While I found a 4 line code which gets it done, I thought
> > there was a preexisting command to do exactly that. Any feedback on this?
> 
> No, but it can be done in one line:
> 
> <?php
> 
> echo array_rand(@file(@$filename), 1);
> 
> 
> # if you wanted to do a couple checks, you could do the following
> 
> if ( is_file(@$filename) && filesize($filename) > 0 )
>  echo array_rand(file($filename), 1);
> 
> ?>

This method will eat memory unless you have a very small file.

Personally I would use filesize to get the length of the file, fopen it, fseek 
to a random position, then track back to a newline and use fgets to get the 
line. Then fclose, obviously.

Simples.

-Stuart

-- 
Stuart Dallas
3ft9 Ltd
http://3ft9.com/




-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to