<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <title>continue</title> </head> <body><div class="manualnavbar" style="text-align: center;"> <div class="prev" style="text-align: left; float: left;"><a href="control-structures.break.html">break</a></div> <div class="next" style="text-align: right; float: right;"><a href="control-structures.switch.html">switch</a></div> <div class="up"><a href="language.control-structures.html">Control Structures</a></div> <div class="home"><a href="index.html">PHP Manual</a></div> </div><hr /><div id="control-structures.continue" class="sect1"> <h2 class="title"><em>continue</em></h2> <p class="verinfo">(PHP 4, PHP 5)</p> <p class="simpara"> <em>continue</em> is used within looping structures to skip the rest of the current loop iteration and continue execution at the condition evaluation and then the beginning of the next iteration. </p> <blockquote class="note"><p><strong class="note">Note</strong>: <span class="simpara"> Note that in PHP the <a href="control-structures.switch.html" class="link">switch</a> statement is considered a looping structure for the purposes of <em>continue</em>. </span> </p></blockquote> <p class="simpara"> <em>continue</em> 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 <em>1</em>, thus skipping to the end of the current loop. </p> <p class="para"> <div class="informalexample"> <div class="example-contents"> <div class="phpcode"><code><span style="color: #000000"> <span style="color: #0000BB"><?php<br /></span><span style="color: #007700">while (list(</span><span style="color: #0000BB">$key</span><span style="color: #007700">, </span><span style="color: #0000BB">$value</span><span style="color: #007700">) = </span><span style="color: #0000BB">each</span><span style="color: #007700">(</span><span style="color: #0000BB">$arr</span><span style="color: #007700">)) {<br /> if (!(</span><span style="color: #0000BB">$key </span><span style="color: #007700">% </span><span style="color: #0000BB">2</span><span style="color: #007700">)) { </span><span style="color: #FF8000">// skip odd members<br /> </span><span style="color: #007700">continue;<br /> }<br /> </span><span style="color: #0000BB">do_something_odd</span><span style="color: #007700">(</span><span style="color: #0000BB">$value</span><span style="color: #007700">);<br />}<br /><br /></span><span style="color: #0000BB">$i </span><span style="color: #007700">= </span><span style="color: #0000BB">0</span><span style="color: #007700">;<br />while (</span><span style="color: #0000BB">$i</span><span style="color: #007700">++ < </span><span style="color: #0000BB">5</span><span style="color: #007700">) {<br /> echo </span><span style="color: #DD0000">"Outer<br />\n"</span><span style="color: #007700">;<br /> while (</span><span style="color: #0000BB">1</span><span style="color: #007700">) {<br /> echo </span><span style="color: #DD0000">"Middle<br />\n"</span><span style="color: #007700">;<br /> while (</span><span style="color: #0000BB">1</span><span style="color: #007700">) {<br /> echo </span><span style="color: #DD0000">"Inner<br />\n"</span><span style="color: #007700">;<br /> continue </span><span style="color: #0000BB">3</span><span style="color: #007700">;<br /> }<br /> echo </span><span style="color: #DD0000">"This never gets output.<br />\n"</span><span style="color: #007700">;<br /> }<br /> echo </span><span style="color: #DD0000">"Neither does this.<br />\n"</span><span style="color: #007700">;<br />}<br /></span><span style="color: #0000BB">?></span> </span> </code></div> </div> </div> </p> <p class="para"> Omitting the semicolon after <em>continue</em> can lead to confusion. Here's an example of what you shouldn't do. </p> <p class="para"> <div class="informalexample"> <div class="example-contents"> <div class="phpcode"><code><span style="color: #000000"> <span style="color: #0000BB"><?php<br /></span><span style="color: #007700">for (</span><span style="color: #0000BB">$i </span><span style="color: #007700">= </span><span style="color: #0000BB">0</span><span style="color: #007700">; </span><span style="color: #0000BB">$i </span><span style="color: #007700">< </span><span style="color: #0000BB">5</span><span style="color: #007700">; ++</span><span style="color: #0000BB">$i</span><span style="color: #007700">) {<br /> if (</span><span style="color: #0000BB">$i </span><span style="color: #007700">== </span><span style="color: #0000BB">2</span><span style="color: #007700">)<br /> continue<br /> print </span><span style="color: #DD0000">"</span><span style="color: #0000BB">$i</span><span style="color: #DD0000">\n"</span><span style="color: #007700">;<br />}<br /></span><span style="color: #0000BB">?></span> </span> </code></div> </div> <p class="para"> One can expect the result to be: </p> <div class="example-contents screen"> <div class="cdata"><pre> 0 1 3 4 </pre></div> </div> <p class="para"> but this script will output: </p> <div class="example-contents screen"> <div class="cdata"><pre> 2 </pre></div> </div> <p class="para"> because the entire <em>continue print "$i\n";</em> is evaluated as a single expression, and so <span class="function"><a href="function.print.html" class="function">print</a></span> is called only when <em>$i == 2</em> is true. (The return value of <em>print</em> is passed to <em>continue</em> as the numeric argument.) </p> </div> </p> <p class="para"> <table class="doctable table"> <caption><strong>Changelog for <em>continue</em></strong></caption> <thead> <tr> <th>Version</th> <th>Description</th> </tr> </thead> <tbody class="tbody"> <tr> <td>5.4.0</td> <td> <em>continue 0;</em> is no longer valid. In previous versions it was interpreted the same as <em>continue 1;</em>. </td> </tr> <tr> <td>5.4.0</td> <td> Removed the ability to pass in variables (e.g., <em>$num = 2; continue $num;</em>) as the numerical argument. </td> </tr> </tbody> </table> </p> </div><hr /><div class="manualnavbar" style="text-align: center;"> <div class="prev" style="text-align: left; float: left;"><a href="control-structures.break.html">break</a></div> <div class="next" style="text-align: right; float: right;"><a href="control-structures.switch.html">switch</a></div> <div class="up"><a href="language.control-structures.html">Control Structures</a></div> <div class="home"><a href="index.html">PHP Manual</a></div> </div></body></html>