Re: Break or continue an outer loop from an inner loop?
| From: | Jeffry Killen | Date: | Tue, 05 Dec 2017 20:22:55 +0000 |
| Subject: | Re: Break or continue an outer loop from an inner loop? | ||
| References: | 1 2 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-326293@lists.php.net to get a copy of this message | ||
> On Dec 5, 2017, at 12:04 PM, David Harkness <david.h@highgearmedia.com> wrote:
>
> On Tue, Dec 5, 2017 at 11:33 AM, Jeffry Killen <jekillen@prodigy.net> wrote:
> The code starts a loop and inside the loop for each iteration
> there is an inner loop.
>
> What I need to do is: depending on a conditional, I want to
> tell the outer loop to continue from the inner loop: I.E.
> stop the inner loop iteration and have the outer loop jump
> to its next iteration.
>
> From the docs for continue [1]:
>
> continue accepts an optional numeric argument which tells it how many levels of enclosing
> loops
> it should skip to the end of. The default value is 1, thus skipping to the end of the
> current loop.
>
> $i = 0;
> while ($i++ < 5) {
> echo "Outer<br />\n";
> while (1) {
> echo "Middle<br />\n";
> while (1) {
> echo "Inner<br />\n";
> continue 3; // <-- exit outermost while loop
> }
> echo "This never gets output.<br />\n";
> }
> echo "Neither does this.<br />\n";
> }
>
> The same applies to break, even in a switch statement.
>
> On Tue, Dec 5, 2017 at 11:45 AM, Ashley Sheridan <ash@ashleysheridan.co.uk> wrote:
> If you just want to stop the inner loop and continue the outer one, a simple break will do:
>
> for($i=0; $i<10; $i++)
> {
> for($j=0; $j<10; $j++)
> {
> echo "$i, $j\n";
>
> if($j==6)
> break;
> }
> }
>
> This example works, but it will break if the outer loop has more lines of code following the
> inner loop.
>
> Cheers!
> David
>
> [1] http://php.net/manual/en/control-structures.continue.php
>
Thank you all for the responses.
I do have code after the inner loop. I should have mentioned they are simple for loops.
But my project is generating table markup for a year calendar.
The outer loop produces the rows, while the inner loop produces the cells in each row,
As I thought of this, it occurred to me that breaking out of the inner loop will produce a
row with less than 7 cells. So I actually shouldn't do it here.
I am having difficulty getting the month day numbers to fall on the correct week days.
I would post what I have on my web site, but alas, my site doesn't have a hosting service
at this time. (any suggestions for a reasonably priced, reliable, unix based hosting service
in the US?)
The process of contemplating and posting about issues is a process of clarifying
the issues so solutions tend to emerge regardless of the responses. The responses
are most often helpful.
Thank you again for time and attention
JK