Die 3 verschiedenen gleich

Lesezeit: 6 Minuten

Die 3 verschiedenen gleich
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.

  • 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

Die 3 verschiedenen gleich
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.

  • Wenn ich zwei identische Datums- und Uhrzeitangaben vergleiche, habe ich ein falsches Ergebnis, warum? Beispiel : sandbox.onlinephpfunctions.com/code/…

    – stloc

    8. Januar 2016 um 9:20 Uhr

  • @stloc, === with objects sagt Ihnen, ob es sich um dasselbe Objekt handelt, nicht um denselben Inhalt.

    – Andreas

    27. Januar 2016 um 20:22 Uhr

  • Eingeführt in PHP4, lustig in Y2018 😉

    – mvorisek

    13. Juli 2018 um 15:36 Uhr

  • = ist der Zuweisungsoperator
  • ==

    ist der Vergleichsoperator (überprüft, ob zwei Variablen gleiche Werte haben)

  • === ist der identische Vergleichsoperator (überprüft, ob zwei Variablen gleiche Werte haben und vom gleichen Typ sind).

= 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

  • Informieren Sie sich auch über != und !== ‘nicht’-Versionen der beiden Vergleichsoperatoren. Einige Sprachen verwenden := als Zuweisung, nur um diese Art von Verwirrung zu vermeiden.

    – Phil Perry

    21. August 2013 um 16:57 Uhr

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

1647100447 157 Die 3 verschiedenen gleich
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.

  • Solche Mikrobenchmarks sind nicht sehr zuverlässig. Es ist auch sehr unwahrscheinlich, dass Sie sich jemals Sorgen machen wollen == oder === als Ursache für Ihr Leistungsproblem. IMO: Es ist besser, streng zu sein (===), es sei denn, Sie möchten ausdrücklich locker sein (==) zu deinen Vergleichen. Die Anzahl der seltsamen Grenzfälle, dh "5 is not a number" == 5 kann zu verrückten Fehlern führen. === leidet nie unter diesem Problem.

    – gnarf

    12. November 2013 um 5:00 Uhr

  • Mein Test bestand darin, den Programmierern das zu sagen, wenn sie sich entscheiden === aus Leistungsgründen sind sie falsch. Programmierer haben also die freie Wahl === oder == aus logischen Gründen, aber nicht aus Leistungsgründen: Es gibt verschiedene Fälle, in denen das eine oder andere bevorzugt wird, und die Leistung darf überhaupt nicht berücksichtigt werden.

    – Lucaferrario

    18. Februar 2016 um 15:40 Uhr

  • Solche Mikrobenchmarks sind nicht sehr zuverlässig. Es ist auch sehr unwahrscheinlich, dass Sie sich jemals Sorgen machen wollen == oder === als Ursache für Ihr Leistungsproblem. IMO: Es ist besser, streng zu sein (===), es sei denn, Sie möchten ausdrücklich locker sein (==) zu deinen Vergleichen. Die Anzahl der seltsamen Grenzfälle, dh "5 is not a number" == 5 kann zu verrückten Fehlern führen. === leidet nie unter diesem Problem.

    – gnarf

    12. November 2013 um 5:00 Uhr

  • Mein Test bestand darin, den Programmierern das zu sagen, wenn sie sich entscheiden === aus Leistungsgründen sind sie falsch. Programmierer haben also die freie Wahl === oder == aus logischen Gründen, aber nicht aus Leistungsgründen: Es gibt verschiedene Fälle, in denen das eine oder andere bevorzugt wird, und die Leistung darf überhaupt nicht berücksichtigt werden.

    – Lucaferrario

    18. Februar 2016 um 15:40 Uhr

994220cookie-checkDie 3 verschiedenen gleich

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy