2009-07-13 24 views
42

Ich habe bemerkt jemand mit dem PHP-Operator ===, die ich nicht sinnvoll machen kann. Ich habe es mit einer Funktion ausprobiert, und es entspricht auf verrückte Weise.Was bedeutet "==="?

Was ist die Definition dieses Operators? Ich kann es nicht einmal in der Deklaration von PHP-Operatoren finden.

+24

FYI, kann man nicht wirklich google '===': http://www.google.com.au/search? q ==== – glasnt

+3

aber ein bisschen mehr Infos für Google wird helfen: ht tp: //www.google.com.sg/search? hl = de & q =% 3D% 3D% 3D + php + operator & btnG = Google + Suchen & meta = & aq = f & oq = – beggs

+0

@TomatoSandwich: Was ist damit - http: // www .google.com/suche? q = drei + gleich + zeichen + php =) – xk0der

Antwort

60
$a === $b  (Identical)  

TRUE wenn $a gleich $b, und sie sind vom gleichen Typ. (Eingeführt in PHP 4)

PHP Docs

+3

Als Anmerkung, dieser Gleichheitsoperator erscheint auch in Javascript und ich glaube Perl. Es ist ziemlich häufig. –

+12

Beachten Sie auch, dass das == auch als "lets-see-what-I-kann-make-of-this" -Operator bekannt ist, da es Perlen wie "100" == "1e2" und 0 == ergibt "ein". –

+1

Nicht viel über PHP zu wissen, verstehe ich die 100 = 1e2 (10 * 10^2), aber ich verstehe nicht die "0" == "Eins"? Kann mir das jemand erklären? – Ksempac

3

Die triple Gleichheitszeichen === prüft, um zu sehen, ob zwei Variablen gleich sind und von der gleichen Art.

12

Sie können here, kurze Zusammenfassung lesen:

$ a == $ b Equal TRUE wenn $ a gleich $ b nach Art Jonglieren ist.

$ a === $ b Identisch WAHR, wenn $ a gleich $ b ist und sie vom selben Typ sind.

+0

Ich fühle mich jetzt ziemlich dumm, dass du es so schnell gefunden hast, ich habe versucht, es ohne viel Erfolg zu googeln .. Danke trotzdem. –

+2

in php.net haben Sie Antworten auf 99% Ihrer Frage dazu. –

50

http://www.php.net/ternary

a gleich $ b TRUE == $, wenn $ a $ gleich b ist, mit Ausnahme von (True == -1), die immer noch wahr ist.

$ a === $ b Identisch WAHR, wenn $ a gleich $ b ist und sie vom selben Typ sind.

> "5" == 5; 
True 
> "5" === 5; 
False 
+0

Nicht wahr. Die drei Gleichheitszeichen geben false zurück, wenn $ a und $ b Objekte der gleichen Klasse sind und dieselben Werte für alle ihre (jeweiligen) Eigenschaften haben.Probieren Sie es selbst aus: Klasse FirstClass { public $ a; öffentliche $ b; \t Funktion FirstClass() { \t \t $ this -> a = 1; \t \t $ this -> b = 1; \t} } $ erste = neue FirstClass(); $ zweite = neue FirstClass(); if ($ first === $ Sekunde) { \t echo "triple equal!"; \t } sonst { \t echo "triple not equal!"; } –

+0

Dykam, genau mein Punkt - aber ich vergleiche nichts. Ich sage nur, dass es bei Objekten nicht der Wert ist, der über === verglichen wird, sondern die tatsächliche Referenz. IE. Sie können vollständig die gleichen Objekte sein, das heißt, mit völlig gleichen alle Werte, aber immer noch === zeigt falsch, weil sie nicht die gleiche Referenz sind. –

+0

Sie haben gesagt: $ a === $ b Identisch WAHR, wenn $ a gleich $ b ist, und sie sind vom gleichen Typ. Ich sage einfach, das ist überhaupt nicht wahr. Punkt. –

1

Siehe Double and Triple equals operator in PHP, die ich für googeln habe auf "PHP drei gleich Operator".

An einer Stelle heißt es, dass:

A double = Zeichen ist ein Vergleich und testet, ob die Variable/Ausdruck/konstant auf der linken Seite hat den gleichen Wert wie die Variable/Ausdruck/konstant nach rechts .

Ein triple = sign ist ein Vergleich, um zu sehen, ob zwei Variablen/expresions/constants gleich sind UND den gleichen Typ haben - d. H. Beide sind Strings oder beide sind ganze Zahlen.

Es gibt auch ein Beispiel, um es zu erklären.

1

Für PHP, kann es eine Null viele verschiedene Bedeutungen annehmen

  1. es ein Boolean false
  2. kann es einen Nullwert
  3. Es könnte wirklich eine Null
sein könnte

Also === wird hinzugefügt, um sicherzustellen, dass der Typ und der Wert identisch sind.

9

In PHP können Sie zwei Werte mit dem Operator == oder === vergleichen. Der Unterschied ist:

PHP ist eine dynamische, interpretierte Sprache, die nicht streng auf Datentypen ist. Dies bedeutet, dass die Sprache selbst versuchen wird, Datentypen bei Bedarf zu konvertieren.

echo 4 + "2"; // output is 6 

Der Ausgang ist Integer-Wert 6, da + der numerische Additions-Operator in PHP ist, also wenn Sie Operanden mit anderen Datentypen, um es zur Verfügung stellen, wird PHP sie zuerst in ihrem entsprechenden Typ umwandeln („2“ zu 2) konvertiert werden und dann die Operation ausführen.

Wenn Sie == als Vergleichsoperator mit zwei Operanden verwenden, die unterschiedliche Datentypen haben können, konvertiert PHP den zweiten Operandentyp in den ersten. Also:

4 == "4" // true

PHP konvertiert "4" bis 4, und vergleicht dann die Werte. In diesem Fall ist das Ergebnis wahr.

Wenn Sie === als Vergleichsoperator verwenden, versucht PHP nicht, irgendwelche Datentypen zu konvertieren. Wenn also die Typen der Operanden unterschiedlich sind, dann sind sie NICHT identisch.

4 === "4" // false

0

"===", um den Wert in der Variablen passenden sowie Datentyp der Variablen.

4

Sie werden diesen Operator in vielen dynamisch typisierten Sprachen sehen, nicht nur in PHP.

== wird versuchen, alles, was es zu tun hat, in Typen zu konvertieren, die es vergleichen kann.

=== wird streng den Typ und Wert vergleichen.

In jeder dynamisch typisierten Sprache müssen Sie vorsichtig sein mit ==, Sie können einige interessante Fehler bekommen.

Das ternäre === ist weniger bequem, aber es ist sicherer.Für Vergleiche sollten Sie immer einige zusätzliche Gedanken machen, ob es === oder ==

6

$x == $y TRUE ist, wenn der Wert der $ x und $ y sind gleich sein sollten:

$x = 1; //int type 
$y = "1"; //string type 
if ($x == $y) { 
    // This will execute 
} 

$x === $y TRUE, wenn der Wert von die $ x und $ y sind gleich und Art von $ x und $ y sind gleich:

$x = 1; //int type 
$y = "1"; //string type 
if ($x === $y) { 
    // This will not execute 
}