Doc #69853 [Nab->Csd]: break behavior unspecified when no argument is specified

From: Date: Sat, 27 Jun 2015 20:26:15 +0000
Subject: Doc #69853 [Nab->Csd]: break behavior unspecified when no argument is specified
References: 1  Groups: php.doc.bugs 
Request: Send a blank email to doc-bugs+get-12480@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=69853&edit=1 ID: 69853 Updated by: salathe@php.net Reported by: chealer at gmail dot com Summary: break behavior unspecified when no argument is specified -Status: Not a bug +Status: Closed Type: Documentation Problem Package: Documentation problem PHP Version: Irrelevant Assigned To: cmb Block user comment: N Private report: N New Comment: This bug has been fixed in the documentation's XML sources. Since the online and downloadable versions of the documentation need some time to get updated, we would like to ask you to be a bit patient. Thank you for the report, and for helping us make our documentation better. Previous Comments: ------------------------------------------------------------------------ [2015-06-27 20:25:06] salathe@php.net Automatic comment from SVN on behalf of salathe Revision: http://svn.php.net/viewvc/?view=revision&amp;revision=337067 Log: clarify break behavior unspecified when no argument is specified (doc bug #69853) ------------------------------------------------------------------------ [2015-06-27 18:45:06] chealer at gmail dot com cmb, the sentence you quote is semantically invalid (there may be more than one current affected structure). As for the example, it cannot replace specification (as for any example). Besides, the break statement you mention is in a single affected structure. Thanks for reopening ------------------------------------------------------------------------ [2015-06-16 18:32:52] cmb@php.net In my opinion, the documentation is pretty clear about that issue: | break ends execution of the current for, foreach, while, | do-while or switch structure. Furthermore line 5 of the example is: | break; /* You could also write 'break 1;' here. */ ------------------------------------------------------------------------ [2015-06-16 18:14:56] chealer at gmail dot com Apologies, the result is the same, but the proper test should have read: <?php foreach(array(1, 2) as $iteration) { var_dump($iteration); foreach (array(1) as $dummy) { break; } } ?> ------------------------------------------------------------------------ [2015-06-16 18:12:52] chealer at gmail dot com Description: ------------ --- From manual page: http://www.php.net/control-structures.break --- "break accepts an optional numeric argument which tells it how many nested enclosing structures are to be broken out of." The documentation does not specify what happens if break's optional is not provided. Therefore, the effect of a "break;" statement inside several concerned structures (as happens at the end of the example) is unspecified. As of PHP 5.4, the effect appears to be that of "break 1;". Comment http://php.net/manual/en/control-structures.break.php#90308 confirms. Test script: --------------- <?php foreach(array(1, 2) as $iteration) { var_dump($iteration); foreach (array() as $dummy) { break; } } ?> Actual result: -------------- int 1 int 2 ------------------------------------------------------------------------ -- Edit this bug report at https://bugs.php.net/bug.php?id=69853&edit=1

« previous php.doc.bugs (#12480) next »