Jedynym rodzajem że mogłem zobaczyć inności jest coś takiego:
$foo = 1;
$bar = 1;
($foo = $foo + $bar) == ($bar = $foo);
Aby zobaczyć dlaczego, spojrzeć na to
A -> ($foo = $foo + $bar)
B -> ($bar = $foo);
Jeśli A
prowadzony jest pierwszy wynik będzie 2
i wynik B
będzie wynosił 2, więc są one równe, a testem będzie true
.
Jeśli B
prowadzony jest pierwszy wynik będzie 1
, a wynik B
będzie 2, więc nie są one równe, a test będzie false
.
Dla każdego pojedynczego porównania (gdzie A
jest zmienną, a nie wyrażeniem), zawsze będzie refleksyjne.
W sensie ogólnym, A == B
nie zawsze ma 100% gwarancji, że jest równoważne z B == A
. W przypadku zmiennych zawsze będzie to odpowiednik. Ale w przypadku złożonych wyrażeń obejmujących przypisanie lub modyfikację zmiennych może nie być.
Powiedziałbym "refleksyjny". – Joe
@Joe: Dzięki. Zaktualizowano. – mpen
@Joe jest poprawne. Jest to uważane za _refleksyjność_. Skojarzenie jest wtedy, gdy '(A + B) + C = A + (B + C)' – treeface