-----Original Message----- From: Ford, Mike [mailto:M.Ford@xxxxxxxxxxxxxx] Sent: 12 March 2013 10:51 AM To: PHP General Subject: RE: Re: UNLESS Statement Equivalent > unless ( $a and $b ) > = > if ( ! ($a and $b) ) > > So in simple terms, just stick a ! (or the keyword not) in front of > your expression, and you'll have exactly what you want: > if( not ( ($current_page == $saved_page) and ($current_ip == > $saved_ip) > and ($current_dt < ($saved_dt + 3600) ) ) { Whilst this is true as far as it goes, I would suggest applying deMorgan's laws to simplify slightly to if ( ($current_page != $saved_page) or ($current_ip != $saved_ip) or ($current_dt >= ($saved_dt + 3600) ) ) Also, the keyword versions of the Boolean operators are very low priority, which is why you need all those extra parentheses -- if you switch to the symbolic versions, you can leave all the internal parentheses out to give: if ($current_page != $saved_page || $current_ip != $saved_ip || $current_dt >= $saved_dt + 3600) Cheers! Mike -- Mike, I presume you're saying the precedence of the Boolean keyword operators is lower than the Boolean symbol operators, but if so then wouldn't there be less need for the parentheses? I prefer using the Boolean keyword operators for both the readability and because of the lower precedence. Unless I've been wrong all this while and the keyword precedence is actually higher? Cheers Arno -- I checked the manual, the Boolean symbol operators have a higher precedence than ternary and assignment, while the Boolean keyword operators have the lowest precedence. So using Boolean keyword operators should obviate internal parentheses. Cheers Arno -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php