note 82608 deleted from control-structures.do.while by cmb

From: Date: Sun, 04 Dec 2016 12:25:41 +0000
Subject: note 82608 deleted from control-structures.do.while by cmb
References: 1  Groups: php.notes 
Request: Send a blank email to php-notes+get-208214@lists.php.net to get a copy of this message
Note Submitter: Ryan ---- 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.

« previous php.notes (#208214) next »