Flint Million wrote:
> This might seem silly but here's what I'm trying to do
> 
> Suppose I have some kind of check variable - say for example
> $abort_now. Or it could be a function. Something to be evaluated to a
> value.
> 
> I want to execute a block of statements, but after EACH statement
> executes, check the value of $abort_now and if it is true, break; out
> of the block.
> 
> Here's an example
> 
> do {
>   do_something();
>   do_something_else();
>   do_another_thing();
>   do_yet_another_thing();
>   and_keep_doing_things();
> } while ($abort_now != 1);
> 
> What I want to happen is for each statement to execute, and keep
> looping around, until the $abort_now variable is set to 1. Now,
> suppose any one of the statements in that block may cause $abort_now
> to become 1. If that happens, I want the block to stop executing
> immediately and not continue executing further statements.
> 
> For example, do_another_thing() causes $abort_now to equal 1. I do not
> want do_yet_another_thing or keep doing things to execute. I want the
> loop to stop right there.
> 
> The only way I can think of doing it is to insert a check after each 
> statement:
> 
> do {
>   do_something();
>   if ($abort_now == 1) { break; }
>   do_something_else();
>   if ($abort_now == 1) { break; }
>   do_another_thing();
>   if ($abort_now == 1) { break; }
>   do_yet_another_thing();
>   if ($abort_now == 1) { break; }
>   and_keep_doing_things();
>   if ($abort_now == 1) { break; }
> } while (TRUE);
> 
> This might work for 2 or 3 statements but imagine a block of say 15
> statements. Having a check after each one would look ugly, and cause
> trouble if the condition needed to be changed or if I instead decided
> to check it, say, against a function.
> 
> So is this possible to do with built in code? or am I stuck with
> having to put a check after each statement in?
> 
> thanks
> 
> fm

Well, since the functions can set $abort_now, why can't they just abort?
Or throw an exception?

try {
    do {
                do_something();
                do_something_else();
                do_another_thing();
                do_yet_another_thing();
                and_keep_doing_things();
        } while (true);
} catch (Exception $e) {
    //do something or nothing
}

Then in your functions instead of setting $abort_now, do:

throw new Exception('Abort! Abort! Abort!');


-- 
Thanks!
-Shawn
http://www.spidean.com

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to