Les opérateurs relationnels aiment-ils la conversion de types d'utilisation inférieure à, supérieure à, gte, lte? Si c'est le cas, pourquoi n'y a-t-il pas d'opérateurs relationnels de comparaison stricts comme! == ou ===?Est-ce que les opérateurs relationnels aiment moins, plus que, gte, lte utilisent la conversion de type en PHP?
Répondre
Non, ils ne sont pas stricts.
Ils peuvent comparer la plupart des types les uns par rapport aux autres et effectuer des castings si nécessaire. Par exemple, il y a un soutien pour les comparaisons de chaînes:
$true = "a" < "b";
interne qui est zendi_smart_strcmp()
.
Si vous voulez faire des comparaisons strictes, vous pouvez simplement vérifier les types vous-même, ou lancer au besoin.
merci. pourquoi n'y a-t-il pas de <== or > == opérateurs stricts? si elles sont toutes les deux du même type, renvoyez la comparaison, si elles ne sont pas du même type, renvoyez toujours false. – Masu
Parce que les variantes strictes ne sont pas couramment nécessaires, et de tels opérateurs sembleraient super étranges. – mario
Qu'est-ce que cet opérateur devrait retourner? Supposons qu'il existe un opérateur strict ou égal. Quel serait le résultat de "1" ==> 1 et 1 ==> "1"? – sectus
s'il était "1" <== "1" alors il retournerait vrai, mais comme! == et ===, s'il était "1" <== 1, alors il retournerait faux parce qu'ils ne sont pas les mêmes type. – Masu
Et 1 <== "1" retournerait faux aussi? – sectus