Edit report at https://bugs.php.net/bug.php?id=46240&edit=1

 ID:                 46240
 Comment by:         dinumarina at yahoo dot com
 Reported by:        kjarli at gmail dot com
 Summary:            Build in foreach else support
 Status:             Open
 Type:               Feature/Change Request
 Package:            Scripting Engine problem
 Operating System:   *
 PHP Version:        5.2.6
 Block user comment: N
 Private report:     N

 New Comment:

Opposing general consensus, I think adding such feature would be semantically 
ambiguous. The foreach function does not fail, it has types it can handle 
(assoc 
array, object) and that it can't handle (scalar). A function can always return 
a 
result that may be valid for foreach but not the expected format, so I think 
data sanitizing is best done dilligently. This is just a lazy-man's hack for a 
non-issue. For the function completion status (onFail), there is already such a 
construct: try {throw()} catch(){} which already supersets the imagined onFail 
implementation. Only thing I would hindsight: it would have been SOOO nice if 
php had a false/null/na result convention, as well as an error/exception 
convention and it would actually stick by it. Each module signals completion, 
computability, singular cases and errors as it well pleases.


Previous Comments:
------------------------------------------------------------------------
[2011-02-18 01:20:24] ijrbiz at gmail dot com

Highly agreed with adding a foreach :: else statement, this request would be 
very 
practical for improved coding structure and follows logical language syntax 
nicely.

foreach ($items as $item) {
        echo $item; // Manage each item, ...
} else {
        echo 'No items present.'; // Manage no items found, ...
}

------------------------------------------------------------------------
[2011-02-04 02:30:00] pedro at worcel dot com

foreachelse seems ok to me. Onfail is... weird. :)

------------------------------------------------------------------------
[2010-12-20 13:40:54] rick dot sketchy at gmail dot com

I have to agree with the OP. foreachelse (or something similar) is really 
needed. I do like the suggestion posted by cerlestes at googlemail dot com:

foreach($arr as $var)
{
    doCode();
}
onFail
{
    failHandling();
}

A fail handler would prove useful,however I can see it may have some 
limitations, in which case an else option on the foreach would be satisfactory. 
Whilst we're at it, it may as well be added to while statements too.

------------------------------------------------------------------------
[2010-02-13 19:44:15] cerlestes at googlemail dot com

ADDITION:

Why I would like to have this is because of the following situation:

----
$test = (float)0; // This would be the return of a function.

// Failhandling
if(!$test)
{
    doFailhandling();
}else ...
----

This method has room for misinterpretations.
Ofc, you could test for "$test === false", but I think a general onFail-handler 
would be way nicer.

Thanks for reading

------------------------------------------------------------------------
[2010-02-13 19:38:00] cerlestes at googlemail dot com

To be honest, I'd like to have a general "onFail{}" handler to put after every 
function, not only foreach.
Like:

----
foreach($arr as $var)
{
    doCode();
}
onFail
{
    failHandling();
}
----

or

----
file("file.txt")
onFail
{
    failHandling();
}
----

Inside of the onFail-brackets a constant __ERROR__ would be available, with 
further information on the error.

Basically, that onFail-handler would be executed upon receiving the constant 
FAIL from the function before the onFail-command.

Regards

------------------------------------------------------------------------


The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at

    https://bugs.php.net/bug.php?id=46240


-- 
Edit this bug report at https://bugs.php.net/bug.php?id=46240&edit=1

Reply via email to