note 82608 added to control-structures.do.while
| From: | Ryan at osu1 dot php dot net | Date: | Fri, 18 Apr 2008 05:59:39 +0000 |
| Subject: | note 82608 added to control-structures.do.while | ||
| Groups: | php.notes | ||
| Request: | Send a blank email to php-notes+get-138470@lists.php.net to get a copy of this message | ||
I've found that the most useful thing to use do-while loops for is multiple checks of file
existence. The guaranteed iteration means that it will check through at least once, which I had
trouble with using a simple "while" loop because it never incremented at the end.
My code was:
<?php
$filename = explode(".", $_FILES['file']['name']); // File being
uploaded
$i=0; // Number of times processed (number to add at the end of the filename)
do {
/* Since most files being uploaded don't end with a number,
we have to make sure that there is a number at the end
of the filename before we start simply incrementing. I
admit there is probably an easier way to do this, but this
was a quick slap-together job for a friend, and I find it
works just fine. So, the first part "if($i > 0) ..." says that
if the loop has already been run at least once, then there
is now a number at the end of the filename and we can
simply increment that. Otherwise, we have to place a
number at the end of the filename, which is where $i
comes in even handier */
if($i > 0) $filename[0]++;
else $filename[0] = $filename[0].$i;
$i++;
} while(file_exists("uploaded/".$filename[0].".".$filename[1]));
/* Now that everything is uploaded, we should move it
somewhere it can be accessed. Hence, the "uploaded"
folder. */
move_uploaded_file($_FILES['file']['tmp_name'],
"uploaded/".$filename[0].".".$filename[1]);
?>
I'm sure there are plenty of ways of doing this without using the do-while loop, but I managed
to toss this one together in no-time flat, and I'm not a great PHP programmer. =) It's
simple and effective, and I personally think it works better than any "for" or
"while" loop that I've seen that does the same thing.
----
Server IP: 216.235.15.211
Probable Submitter: 70.66.16.222
----
Manual Page -- http://www.php.net/manual/en/control-structures.do.while.php
Edit -- https://master.php.net/note/edit/82608
Del: integrated -- https://master.php.net/note/delete/82608/integrated
Del: useless -- https://master.php.net/note/delete/82608/useless
Del: bad code -- https://master.php.net/note/delete/82608/bad+code
Del: spam -- https://master.php.net/note/delete/82608/spam
Del: non-english -- https://master.php.net/note/delete/82608/non-english
Del: in docs -- https://master.php.net/note/delete/82608/in+docs
Del: other reasons-- https://master.php.net/note/delete/82608
Reject -- https://master.php.net/note/reject/82608
Search -- https://master.php.net/manage/user-notes.php