2015-02-27 2 views
0

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?

+0

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

+0

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

+0

Et 1 <== "1" retournerait faux aussi? – sectus

Répondre

0

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.

+0

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

+0

Parce que les variantes strictes ne sont pas couramment nécessaires, et de tels opérateurs sembleraient super étranges. – mario