web-dev-qa-db-fra.com

Les 3 égaux différents

Quelle est la différence entre =, ==, et ===?

Je pense qu'en utilisant un signe égal, on déclare une variable alors que deux signes égaux correspondent à une condition de comparaison et enfin trois signes égaux servent à comparer les valeurs de variables déclarées.

147
Strawberry

Tu as = l'opérateur opérateur , == l'opérateur de comparaison '' égal ' et === l'opérateur de comparaison 'identique' .

$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)

Pour plus d'informations sur la nécessité de == et ===, et situations à utiliser chacune, regardez la documentation .

169
gnarf
  • = est l'opérateur d'affectation
  • == est l'opérateur de comparaison (vérifie si deux variables ont des valeurs égales)
  • === est l'opérateur de comparaison identique (vérifie si deux variables ont des valeurs égales et sont du même type).
22
Rich Adams

= opérateur d'assignation

== vérifie si deux variables ont la même valeur

=== vérifie si deux variables ont la même valeur ET si leurs types sont identiques

8
Silvio Donnini

L'opérateur = assigne la valeur à une variable $ six = 6; la valeur 6 est assignée à la variable $ six

== opérateur vérifie si la valeur des deux variables est égale et principalement utilisée dans des conditions telles que les instructions if

$a = 2;
$b = 2;
if ($a == $b) { 
    echo both variables have the same value; 
}

=== opérateur similaire à == (vérifier si la valeur est égale à) et vérifier également si les deux du même type de données

$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';
}

// ici $ a est de type int alors que $ b est de type chaîne. Alors voici la sortie

2
Gideon

Pour les utilisateurs avancés PHP, connaissant la différence entre ==et === et se demandant "est-il plus rapide de comparer avec == ou avec === quand je suis sûr que les deux opérandes sont du même type? "

La réponse courte et générale est: Il n’ya aucun gain de performance en utilisant === dans ce cas, vous devriez probablement utiliser ==.

Pour ceux qui souhaitent le comparer eux-mêmes, vous pouvez utiliser le code suivant que j'ai écrit ad-hoc et essayer différentes valeurs pour $a et $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";
?>

REMARQUE: La comparaison n'est valide que lorsque chaque "PREMIER ESSAI" est très proche de son "SECOND ESSAI". S'ils diffèrent de manière significative, cela signifie que le processeur était occupé à effectuer autre chose lors de l'exécution des comparaisons. Les résultats ne sont donc pas fiables et le point de référence doit être exécuté à nouveau.

0
lucaferrario