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']); $i=0; do {
if($i > 0) $filename[0]++;
else $filename[0] = $filename[0].$i;
$i++;
} while(file_exists("uploaded/".$filename[0].".".$filename[1]));
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.