Re: Nested loopa
| From: | Matijn Woudt | Date: | Thu, 27 Dec 2012 18:29:52 +0000 |
| Subject: | Re: Nested loopa | ||
| References: | 1 2 3 4 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-319959@lists.php.net to get a copy of this message | ||
On Thu, Dec 27, 2012 at 4:42 PM, Tedd Sperling <tedd@sperling.com> wrote:
> On Dec 26, 2012, at 10:09 AM, Jim Giner <jim.giner@albanyhandball.com>
> wrote:
>
> > While I fully understand the purpose of the do...while construct, I just
> never get used to seeing it used. (in other langs I had to deal with a
> 'repeat...until construct and dis-liked that also). I pretty much know if
> I'm going to have to deal with a "run at least once" when I'm coding and
> therefore code appropriately, altho I don't know in what ways I've handled
> it at this very moment.
> > -snip-
> > To me - so much easier to comprehend at first glance. As soon as my eye
> comes to a block of code starting with a conditional like 'while', I
> readily see what makes it tick. Again I see the potential usefulness of
> doing it the other way as you did in your example, but in your case there
> wasn't a need for using 'do...while' since you structured it so that there
> was never a case where you had to force the loop to happen regardless of
> conditions.
>
> I too used while's instead of do's for the same reason.
>
> However, in my class I had a student show be the light (one can always
> learn from beginners).
>
> Think of it this way, you travel into the code knowing that at some point
> you're going to repeat the block of code IF a condition is going to be met
> within the block of code. With that consideration, the 'do/while()' works.
>
> Using just a 'while()' for everything means you must determine the what
> the truth of the 'while()' is going to be AND set that value before the
> loop. Whereas, using a 'do/while()', you don't need to set the truth until
> the block of code has been implemented AND at that point determine the
> truth of the block of code.
>
> Cheers,
>
> tedd
>
>
There are just cases where do/while makes more sense, for example:
do {
$c = fgetc($fp);
} while ($c != 0);
if you want to put while in front, you need to duplicate the fgetc call,
like this:
$c = fgetc($fp);
while($c != 0) {
$c = fgetc($fp);
}
Which is worse than the do/while construct.
- Matijn