AW: reason for a "Notice:.." on one site but not another? (Same code.)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



the single & is a logical AND so a() NOR b() is evaluatet ! its usually used on binary integer.
e.g. 0x0001 & 0x0001 = 0x0001 equlals TRUE while 0x0002 & 0x0001 equals FALSE 

so something like $a & $b guides to some very interisting results depending of their values
but nothing u expect.

while && tells 'evaluate' the expressions on both sites and combine its results in an AND operation.

thats why compilers and interpreters do have a definition what value TRUE has.
its very likely that TRUE is 1 and false is 0

lets say 
$a = 1
$b = 1

then 
$a & $b is 1 or true and it would give the same like
$a && $b in that case

at that point its also to mention that an empty string in PHP is NOT == FALSE

this gives the following result on an empty string:
$a = "";
isset( $a ) == TRUE

while
$a = null;
isset( $a ) == FALSE;

for the same story there are the
==
===
and
!=
!===
operators





________________________________
Von: Martin Scotta <martinscotta@xxxxxxxxx>
An: Andrew Ballard <aballard@xxxxxxxxx>
CC: Ralph Deffke <ralph_deffke@xxxxxxxx>; php-general@xxxxxxxxxxxxxx
Gesendet: Montag, den 10. August 2009, 20:40:19 Uhr
Betreff: Re:  reason for a "Notice:.." on one site but not another? (Same  code.)

This "intelligence" is given by the laziness of the && operator.

$res = a() && b(); # if a() is false then b() does not evaluate
$res = a() & b(); # b() evaluates no matter a()'s result

so, order matters.


On Mon, Aug 10, 2009 at 3:29 PM, Andrew Ballard <aballard@xxxxxxxxxx> wrote:

On Mon, Aug 10, 2009 at 1:50 PM, Ralph Deffke<ralph_deffke@xxxxxxxx> wrote:
>>> this is not "intelligence" its just pure math. the '&&' says if BOTH
>>> expressions are true then the whole expression is true.
>>>
>>> so if the first one is false, the whole is false, why checking the next one
>>> in the underlaying C it would be something like this
>>> {
>>> if ( expression == false ) return false;
>>> if ( expression == false) return false;
>>> return true;
>>> }
>>>
>>> ralph
>>> ralph_deffke@xxxxxxxx
>
>That's logically correct, and while PHP does implement this
>>"short-circuit" logic, not all languages do. In that regard, I
>>appreciate what John meant by saying it makes it look "more
>>intelligent." Some languages evaluate each of the conditions to their
>>respective boolean results before evaluating the logical operators.
>
>>Andrew
>
>
>>--
>>PHP General Mailing List (http://www.php.net/)
>>To unsubscribe, visit: http://www.php.net/unsub.php
>
>


-- 
Martin Scotta



      

[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux