Bug #16223 Updated: Nested If block not execute correctly

From: Date: Fri, 22 Mar 2002 18:49:43 +0000
Subject: Bug #16223 Updated: Nested If block not execute correctly
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-3158@lists.php.net to get a copy of this message
ID: 16223 Updated by: daniel@php.net Reported By: amin.javanbakht@openwave.com Status: Bogus Bug Type: *Regular Expressions Operating System: SUN PHP Version: 4.1.2 New Comment: What is $name supposed to be? Your examples (!= or ==) are applying a completely different logic. $name = "foo"; If $name is not "test1" => TRUE This Condition breaks at this point. The second condition is never executed. Consider the following Script: ------------------------------------------- <?php function first() { echo "first<br>\n"; return true; } function second() { echo "second<br>\n"; return true; } if(first() || second()) echo "YES<br>\n"; else echo "NO<br>\n"; ?> ------------------------------------------- The output is NOT "first, second, YES" as you might think. It is "first, YES". The || operator checks whether either the left condition or the right condition returns true. If the left condition is true, the right condition is not anymore checked. Daniel Lorch Previous Comments: ------------------------------------------------------------------------ [2002-03-22 13:26:06] amin.javanbakht@openwave.com >>If the fruit is not blue or the fruit is not red, do something. The problem is when the fruit is blue, it still return true, but it has to return false ------------------------------------------------------------------------ [2002-03-22 13:20:45] rasmus@php.net Logic 101 If the fruit is not blue or the fruit is not red, do something. Since the fruit can only be one colour, that logic will always return true. ------------------------------------------------------------------------ [2002-03-22 13:11:33] amin.javanbakht@openwave.com if ( ( $name != "test1" ) || ( $name != "test2" ) ) does not work properly. if I Do each condition seperately, it works but If I join them using || then this never works however this works fine if ( ( $name == "test1" ) || ( $name == "test2" ) ) it seems like the problem occurs only with "!=" condition ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=16223&edit=1

« previous php.bugs (#3158) next »