On Tue, August 15, 2006 12:04 pm, John Meyer wrote:
> I have a script to list the files in a directory:
>
> <select name="letters">
> <?php
> $open = opendir(".");
> while ($file = readdir($open) != false) {
> ?>
> <option value="<?=$file?>"><?=$file?></option>
> <?php
> }
> ?>
> </select>
> </form>
>
> And all I am getting are "1"s. I think I'm doing it right, what is
> the
> disconnect?
It's not a readdir question. It's an Order of Operations question.
:-)
$file = readdir($open) != false
You probably believe that PHP is going to magically "know" that you
want this bit:
readdir($open) != false
to be done "first"
But PHP can't read your mind.
It's going to look at the facts of the case.
= and != have equal priority in PHP,
and in case of a "tie" it will evaluate them left-to-right:
$file = readdir($open)
This gives you the name of the file.
PHP then does the != false bit, comparing the name of a file with false.
Unless your filename starts with one or more '0' characters, and then
has alpha characters for the first non-numeric characters after the
'0's, then it ain't gonna be equal to false, and it will always return
1.
'afile' != false ----> 1
'filename' != false -> 1
'000name' != false --> 0
'012name' != false --> 1
You really do need to put the parentheses in there, so PHP does things
in the rigth order, just like the manual says to:
http://php.net/readdir
--
Like Music?
http://l-i-e.com/artists.htm
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php