PHP: "===" was ist das genau?

Josh

Legendäres Mitglied
Hi alle

Was genau bedeutet "===" in PHP? Habe in Google nach "PHP ===" gesucht, aber erwartungsgemäss nichts spezifisches gefunden...
tongue.gif


Untersucht "===", ob z.B. 2 Variablen auf denselben Speicherbereich zeigen (also Referenzen auf dieselbe Variable sind)? Habe folgenden Code gefunden, welcher meine Theorie unterstützt:

CODE require_once 'Log.php';

/* Same construction parameters */
$a = &Log::singleton('console', '', 'TEST');
$b = &Log::singleton('console', '', 'TEST');

if ($a === $b) {
echo '$a and $b point to the same Log instance.' . "\n";
}


Danke für Info, man hat halt nie ausgelernt.
smile.gif


Grüsse
Josh
 
Zufälle gibt's: Bin in einem anderen Zusammenhang gerade auf === gestossen. Das Ding nennt sich Identitätsoperator. Wenn Du nach "PHP Identitätsoperator ===" googelst wirst Du fündig.

Kenne mich selber zu wenig damit aus, darum hier ein Link:www.galileocomputing.de/openbook/php4/kapk.htm

QUOTE Mit Hilfe dieses Operators wird die Identität von zwei Variablen nur dann festgestellt, wenn ihr Wert gleich ist (das ist auch schon bei dem Operator == der Fall, also mit nur zwei Gleichheitszeichen) und wenn ihr Datentyp gleich ist.
 
=== sollte man z.B. bei strpos() verwenden,
Wenn der gefundene Substring am Anfang vorkommt,
gibt strpos() eine 0 zurück...wenn man die mit == false vergleicht,
ist die Bedingung erfüllt, jedoch gibt strpos() auch ein richtiges false
zurück wenn der string nicht gefunden wurde...

Zusammengefasst kann man sagen dass === bei Booleans
nur true und false betrachtet und nicht wie == auch noch 0 (=false)
und 1 (=true) berücksichtigt.

Da wir schon beim Thema sind. Es gibt noch ein anderes nützliches
Feature in PHP dass nicht jeder kennt:

$$variable

Erlaubt dynamisches benennen von Variablen

z.B.

$variable = "test";
$$variable = "hello world";

echo $variable; (-> "test")
echo $$variable; (-> "hello world")
echo $test; (-> "hello world")

geil, wa?
biggrin.gif
 
QUOTE Erlaubt dynamisches benennen von Variablen

z.B.

$variable = "test";
$$variable = "hello world";

echo $variable; (-> "test")
echo $$variable; (-> "hello world")
echo $test; (-> "hello world")

geil, wa?
biggrin.gif


Sowas verwirrt aber doch eigentlich nur unnötig, oder?
Zwei Tage nachdem man sowas eventuell mal testhalber eingebaut hat vergisst man doch sofort, wozu das gut war weil es einfach zu unüblich ist.
 
@ eVolver:

Danke für die Info. Den Trick mit dem $$ kannte ich schon und habe ihn schon mehrere Male verwendet. Das kann durchaus sinnvoll sein @ Ansgar.
smile.gif
 
=== ist glaube ich auch bei OOP (PHP5) wichtig.

„When using the comparison operator (==), object variables are compared in a simple manner, namely: Two object instances are equal if they have the same attributes and values, and are instances of the same class.
On the other hand, when using the identity operator (===), object variables are identical if and only if they refer to the same instance of the same class.”
Quelle: http://www.dynamic-webpages.de/php/languag...-comparison.php

Bei Array Vergleichen gab’s mit „===“ auch noch einen Unterschied, was genau weiß ich nicht mehr

$$ zu benutzen ist wirklich heikel. Wie immer gibt es sinnvolle Anwendungen dafür, aber meistens sind andere Varianten „besser“ weil so etwas oft schlecht wartbare Scripte verursacht. Der Erstaufwand ist vielleicht gering, aber das hat oft später seinen Preis wenn irgendwann mal jemand anders das Script erweitert.
 
Zurück
Oben