Is $a == $b always equivalent to $b == $a?

I think in JavaScript there's a few weird cases where that's not true, due to casting.

I think ide is correct. I'll ask another question.


I would say 'reflexive'.

Written by Joe

@Joe: Thanks. Updated.

Written by Mark

@Joe is correct. This is considered reflexivity. Associativity is when (A + B) + C = A + (B + C)

Written by treeface

Don't quote me on this, but I think the weird cases arise for transitivity; i.e., a == b and b == c but a != c.

Written by ide

I have tried a number of variations and cannot find a case where ($a == $b) !== ($b == $a), but I am determined to do so now!

Written by Josh

@ide: Oh... is that where it occurs? Maybe I should have asked that instead then :)

Written by Mark

Accepted Answer

Depends what happens between those two calls. Otherwise yes, those are the same. The order makes no difference. Using 2 equals == A string of 1 and integer of 1, will return true when compared. Type is ignored, only value is compared. So no wierdness.


$a=(string) 1;
$b=(int) 1;


echo $a==$b;

Outputs: 1


To clarify, there is absolutely nothing you can ever put in $a or $b to get a different output on the comparison, just by putting it on the other side of the operator.


echo $a==$b;
echo $b==$a;

The output of that, for any $a or $b values, will always without a doubt be true true, or false false.

Written by profitphp
This page was build to provide you fast access to the question and the direct accepted answer.
The content is written by members of the community.
It is licensed under cc-wiki