ID: 29758 Updated by: [EMAIL PROTECTED] Reported By: bd at avatartechnology dot com -Status: Open +Status: Bogus -Bug Type: Performance problem +Bug Type: Scripting Engine problem Operating System: Linux RedHat 7.3 PHP Version: 4.3.8 New Comment:
Sorry, but your problem does not imply a bug in PHP itself. For a list of more appropriate places to ask for help using PHP, please visit http://www.php.net/support.php as this bug system is not the appropriate forum for asking support questions. Thank you for your interest in PHP. No, it should not. Compare the priority of = and "and". Previous Comments: ------------------------------------------------------------------------ [2004-08-19 16:50:14] bd at avatartechnology dot com Here is a more basic example. $true = true; $false = false; $result = $true and $false; printf("result = %d",$result); This should produce: "result = 0" This is actually producing: "result = 1" ------------------------------------------------------------------------ [2004-08-19 16:45:10] bd at avatartechnology dot com $free_shipping = true; $residential_fee = 'Y'; $free_shipping = $free_shipping and ($residential_fee == 'N'); printf("free = %d",$free_shipping); This code fails too. As stated in my previous comments priority of operators is not an issue. "and" is producing wrong results. Even if priority was an issue with the previous code example, the result should still be false. The 'and' operator is IGNORING conditionals after it, which is a PHP bug. ------------------------------------------------------------------------ [2004-08-19 16:33:02] [EMAIL PROTECTED] Sorry, but your problem does not imply a bug in PHP itself. For a list of more appropriate places to ask for help using PHP, please visit http://www.php.net/support.php as this bug system is not the appropriate forum for asking support questions. Thank you for your interest in PHP. No, && and and have a different priority (compare to = and ==). http://no.php.net/manual/en/language.operators.php#language.operators.precedence ------------------------------------------------------------------------ [2004-08-19 15:54:45] bd at avatartechnology dot com Description: ------------ Ran into a situation where code that utilized the operator 'and' produced erroneous results. $free_shipping = true; $add_fee = 'Y'; $free_shipping = $free_shipping and $add_fee == 'N'; This was producing the result where $free_shipping was always true. Adding parenthesis makes no difference in result. -------------- $free_shipping = true; $residential_fee = 'Y'; $free_shipping = $free_shipping && $residential_fee == 'N'; This accurately produces the correct results. -------------- According to the documentation on PHP website 'and' and '&&' should be used interchangably with same results. Reproduce code: --------------- $free_shipping = true; $residential_fee = 'Y'; $free_shipping = $free_shipping and $residential_fee == 'N'; printf("free = %d",$free_shipping); Expected result: ---------------- free = 0 Actual result: -------------- free = 1 ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=29758&edit=1
