2009/2/2 Gavin Hodge <[email protected]>Hi, I'm fairly new to PHP, having migrated from the Java / C# world. I wrote some code similar to the following: $success = true; $success &= operation1(); $success &= operation2(); if ($success === true) { operation3(); // depends on 1 and 2 being successful } This didn't work as expected. After a bit of digging I found: * The &= operation isn't mentioned anywhere in the PHP documentation * The &= function seems to work as expected, however the following is observed... $success = true; $success &= true; print $success == true; // outputs 1 print $sucesss === true; // no output * The 'or' assignment operator |= causes no errors but doesn't work. Can any PHP gurus explain why the &= operator works at all, and why === seems to fail afterwards? Cheers, Gavin.Hey, never heard of the "|=" operator. So I think php does not support it.
Not true. This works just fine: <?php $a = 0; $b = 1; $a |= $b; echo $a; ?> And gives 1 as expected.
I cannot say how "&=" works in Java or C# but as of php it works like that (IMO) (reference instead of copy): $var1 = "test1"; $var2 = $var1; $var3 &= $var1; $var1 = "test2"; echo var1; // "test2" echo var2; // "test1" echo var3; // "test2"
The manual does describe these as "combined operators" in the assignment operators section. See the last example:
http://www.php.net/manual/en/language.operators.assignment.php -- Thodoris

