web-dev-qa-db-fra.com

PHP: tester si trois variables sont égales

Je ne l'ai jamais rencontré auparavant, mais comment testeriez-vous si trois variables sont identiques? Ce qui suit, évidemment, ne fonctionne pas, mais je ne peux pas penser à une manière élégante (et correcte) d'écrire ce qui suit:

if ($select_above_average === $select_average === $select_below_average) { }

38
Matty
if ((a == b) && (b == c)) {
   ... they're all equal ...
}

par la relation transitive

63
Marc B
$values = array($select_above_average, $select_average, $select_below_average);

if(count(array_unique($values)) === 1) {
    // do stuff if all elements are the same
}

Ce serait une autre façon de le faire.

23
PeeHaa
if ($select_above_average === $select_average
    && $select_average === $select_below_average) { }
9
Dogbert

vous avez déjà votre réponse d'Adam, mais un bon moyen de vous rappeler comment le faire correctement est de vous souvenir que pour une seule validation, vous devriez envelopper () accolades, si vous ne faites qu'une seule vérification, vous disposez déjà des accolades fournies par l'instruction if ().

Exemple:

si ( a === b )

et si vous faites plusieurs alors

si (( a === b ) && ( c === d ))

Si vous vous souvenez que chaque ensemble d'accolades est un contrôle de validation, vous pouvez vous connecter comme ceci:

si ((( a === b ) || ( c === d )) && ( e === f ))

si les instructions et de nombreuses autres opérations logiques fonctionnent sur la hiérarchie, de sorte que le nombre de contrôles individuels dans un contrôle a un effet sur le contrôle parent.

en prenant le troisième exemple ci-dessus si a === b ou c === d échoue alors e === f ne sera jamais vérifié car l'ab, cd est enveloppé dans des accolades afin qu'il soit retourné et vérifié.

J'espère que cela vous aide un peu plus.

5
RobertPitt

J'avais une situation unique dans laquelle j'avais besoin de voir si la quantité d'articles dans trois tableaux était la même que ce scénario.

Voici ce que j'ai trouvé:

(Supposons que les champs, les opérateurs et les valeurs sont tous des tableaux)

$allfieldscount = array(count($fields), count($operators), count($values)); //store an array of the count of all the arrays.

$same = array_count_values($allfieldscount);//returns an array by values in the array.  We are looking to see only 1 item in the array with a value of 3.

if(count($same) != 1){
    //Then it's not the same
}else{
   //Then it's the same
}

Cette tactique compte les champs dans les différents tableaux et en utilisant array_count_values ​​s'ils sont tous les mêmes, alors le compte du tableau qu'il renvoie sera '1', si c'est autre chose alors ce n'est pas le même. Recherchez array_count_values ​​sur php.net pour mieux comprendre ce que cela fait.

1
Joseph Astrahan