At 22:13 13.03.2003, Liam Gibbs said:
--------------------[snip]--------------------
>I know that in a case like this
>
>if((test1) && (test2) && (test3)) {
>    ...
>}
>
>if test1 fails, dear PHP won't bother doing test2 and 3. Am I correct? Is 
>there a syntax that will make it carry on with test2 and 3 anyway, 
>regardless of how test1 came out?
--------------------[snip]-------------------- 

The rule for AND chains is:
 - evaluate the expressions from left to right
 - stop AND DON'T RUN THE IF-BLOCK at the first expression evaluating to false

The rule for OR chains is:
 - evaluate the expressions from left to right
 - stop AND RUN THE IF-BLOCK at the first expression evaluating to true

This feature is inherent to all (well, most at least) languages - so be
aware of side effects (or no side effects occurring) with such constructs.

To allow _all_ expressions to be evaluated you need to run all 3 by
themselves, later comparing the results:
   $x1 = test1();
   $x2 = test2();
   $x3 = test3();
   if ($x1 && $x2 && $x3) ...



-- 
   >O     Ernest E. Vogelsinger
   (\)    ICQ #13394035
    ^     http://www.vogelsinger.at/



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

Reply via email to