
Erdbeere
Was ist der Unterschied zwischen =
, ==
und ===
?
Ich denke, mit einem Gleichheitszeichen wird eine Variable deklariert, während zwei Gleichheitszeichen für eine Vergleichsbedingung und schließlich drei Gleichheitszeichen zum Vergleichen von Werten deklarierter Variablen dienen.

gnarf
Du hast =
der Aufgabenverwalter, ==
der ‘gleicher’ Vergleichsoperator und ===
der ‘identischer’ Vergleichsoperator.
$a = $b Assign Sets $a to be equal to $b.
$a == $b Equal TRUE if $a is equal to $b.
$a === $b Identical TRUE if $a is equal to $b, and they are of the same type. (introduced in PHP 4)
Weitere Informationen zur Notwendigkeit von ==
und ===
und Situationen, um sie zu verwenden, schauen Sie sich an die Dokumente.
= Zuweisungsoperator
== prüft, ob zwei Variablen den gleichen Wert haben
=== prüft, ob zwei Variablen den gleichen Wert haben UND ob ihre Typen gleich sind
Der Operator = weist den Wert einer Variablen zu $six = 6; Der Wert 6 wird der Variablen $sechs zugewiesen
== Operator prüft, ob der Wert beider Variablen gleich ist und wird meistens in Bedingungen wie if-Anweisungen verwendet
$a = 2;
$b = 2;
if ($a == $b) {
echo both variables have the same value;
}
=== Operator ähnlich == (überprüfen Sie, ob der Wert gleich ist) und prüfen Sie auch, ob beide denselben Datentyp haben
$a = 2;
$b = "2";
if ($a === $b) {
echo "both variable have same value and of same data type";
} else {
echo 'both variable is either not equal or not of same data type';
}
// Hier ist $a vom Typ int, während $b vom Typ string ist. Also hier die Ausgabe

Lucaferrario
Für fortgeschrittene PHP-Benutzer, die den Unterschied zwischen kennen ==
und ===
und fragen sich: “Ist es schneller zu vergleichen? ==
oder mit ===
wenn ich sicher bin, dass beide Operanden vom gleichen Typ sind?”
Die kurze und allgemeine Antwort lautet: Es gibt keinen Leistungsgewinn bei der Verwendung ===
in diesen Fällen sollten Sie also wahrscheinlich verwenden ==
.
Für diejenigen, die daran interessiert sind, es selbst zu benchmarken, können Sie den folgenden Code verwenden, den ich ad hoc geschrieben habe, und verschiedene Werte ausprobieren $a
und $b
:
<?php
// CONFIGURATION
$cycles = 1000000;
$a="random string 1";
$b = 'random string 2';
// FUNCTIONS
function compare_two_equals($a, $b) {
if ($a == $b) {
return TRUE;
} else {
return FALSE;
}
}
function compare_three_equals($a, $b) {
if ($a === $b) {
return TRUE;
} else {
return FALSE;
}
}
// EXECUTION
$time = microtime(TRUE);
for ($count_a = 0; $count_a < $cycles; $count_a++) {
compare_two_equals($a, $b);
}
$time_two_a = microtime(TRUE) - $time;
$time = microtime(TRUE);
for ($count_a = 0; $count_a < $cycles; $count_a++) {
compare_three_equals($a, $b);
}
$time_three_a = microtime(TRUE) - $time;
$time = microtime(TRUE);
for ($count_a = 0; $count_a < $cycles; $count_a++) {
compare_two_equals($a, $b);
}
$time_two_b = microtime(TRUE) - $time;
$time = microtime(TRUE);
for ($count_a = 0; $count_a < $cycles; $count_a++) {
compare_three_equals($a, $b);
}
$time_three_b = microtime(TRUE) - $time;
$time = microtime(TRUE);
// RESULTS PRINTING
print "<br />\nCOMPARE == (FIRST TRY): " . number_format($time_two_a, 3) . " seconds";
print "<br />\nCOMPARE == (SECOND TRY): " . number_format($time_two_b, 3) . " seconds";
print "<br />\nCOMPARE === (FIRST TRY): " . number_format($time_three_a, 3) . " seconds";
print "<br />\nCOMPARE === (SECOND TRY): " . number_format($time_three_b, 3) . " seconds";
?>
HINWEIS: Der Vergleich ist nur gültig, wenn jeder “ERSTE VERSUCHEN” sehr nahe an seinem “Zweiten VERSUCHEN” liegt. Wenn sie sich signifikant unterscheiden, bedeutet dies, dass der Prozessor während der Ausführung der Vergleiche mit etwas anderem beschäftigt war und die Ergebnisse daher unzuverlässig sind und der Benchmark erneut ausgeführt werden sollte.
9942200cookie-checkDie 3 verschiedenen gleichyes
Schau dir das Beispiel an … Ich habe es gepostet, es würde mehr Dinge verdeutlichen ..
– InfantPro’Aravind’
14. Januar 2010 um 10:55 Uhr
Für fortgeschrittene PHP-Benutzer, die den Unterschied zwischen == und === kennen und sich fragen: “Ist es schneller, mit == oder mit === zu vergleichen, wenn ich sicher bin, dass beide Operanden vom gleichen Typ sind?”, schauen Sie bitte nach in meinem Benchmark-Skript unten.
– Lucaferrario
8. Juli 2013 um 14:04 Uhr
@Strawberry Ich denke, das Tag der Frage sollte auch das Javascript-Tag enthalten, da es auch für diese Sprache gilt.
– Funk Forty-Niner
11. Juni 2016 um 18:35 Uhr
(Update): Ich habe das Javascript-Tag in einer Bearbeitung hinzugefügt, da es einige Fragen gab, bei denen die Leute es benutzten
=
in Javascript. Das gilt nicht nur für PHP, sondern auch für andere Sprachen.– Funk Forty-Niner
11. Juni 2016 um 19:09 Uhr
Ich habe das JavaScript-Tag gelöscht: Alle Antworten hier beziehen sich nur auf PHP (außer der neuesten, die sehr schwach ist). sind Unterschiede, wie die Sprachen damit umgehen, und es gibt bereits eine ähnliche de facto kanonische JavaScript-Frage (Welcher Gleichheitsoperator (== vs ===) sollte in JavaScript-Vergleichen verwendet werden?).
– JJJ
16. Mai 2018 um 10:34 Uhr