note 82608 added to control-structures.do.while

From: 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

« previous php.notes (#138470) next »