Единственный тип, который я мог видеть, это что-то вроде:
$foo = 1;
$bar = 1;
($foo = $foo + $bar) == ($bar = $foo);
Чтобы понять почему, посмотрите на это
A -> ($foo = $foo + $bar)
B -> ($bar = $foo);
Если A
запускается первым, результат будет 2
, а результат B
будет равен 2, поэтому они равны, и тест будет true
.
Если B
запускается первым, результат будет 1
, а результат B
будет равен 2, поэтому они не равны, и тест будет false
.
Но для любого сравнения одного типа (где A
является переменной, а не выражением) оно всегда будет рефлексивным.
Таким образом, в общем смысле, A == B
не всегда на 100% гарантированно эквивалентно B == A
. Для переменных это всегда будет эквивалентно. Но для сложных выражений, связанных с присваиванием или изменением переменных, это может быть не так.