In Java / C# / C, $bool &= $anotherBool; is shorthand for $bool = $bool & $anotherBool; So &= forces a reference assignment? On Tue, Feb 3, 2009 at 12:03 AM, Edmund Hertle <edmund.hertle@xxxxxxxxxxxxxxx> wrote: > 2009/2/2 Gavin Hodge <gavin.hodge@xxxxxxxxx> >> >> 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. > 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" > > -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php