Re: randomly random
| From: | Stuart Dallas | Date: | Tue, 05 Apr 2011 15:24:42 +0000 |
| Subject: | Re: randomly random | ||
| References: | 1 2 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-312275@lists.php.net to get a copy of this message | ||
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/