PHP: Datentypen vergleichen

Crysis nerd

Freizeitschrauber(in)
Ich versuche die Datentypen 2er Variabeln zu vergleichen.
Allerdings nur die Datentypen, also funktioniert === nicht...

Situation: Es gibt eine Funktion, die einen bestimmten Wert in der Mysql Datenbank ändert. Die übergabe Werte sind "name" und "value", was für sich spricht.
Nun soll aber, falls man als value einen string übergibt, erst geprüft werden, ob das der richtige Datentyp für den Wert (namens "name") ist.
Also will ich den Datentyp von "value" mit dem Datentyp vom bisherig eingetragenen Wert vergleichen.

Es gibt ja die Funktion Gettype(), allerdings warnt php.net davor, einmal wegen der Geschwindigkeit der Funktion und noch wegen einer anderen Sache, die hier nicht interessiert.
Nun die Frage: ist die Funktion GetType() doch nicht so "schlimm", dass man sie gut benutzen kann und gibt es vllt. noch eine andere Möglichkeit, mein Problem zu lösen?

Danke schonmal für Antworten.

mfg
Lukas
 
Also habe ich das richtig verstanden? Das kommt ein String und das soll der und der Datentyp sein? oO
Das ist doch immer ein String ;)

Sonst kannst du mit is_string() prüfen bzw mit:
is_array()
is_bool()
is_double()
is_real()
is_integer()
is_long()
is_object()

jeweils true und false als rückgabewert ;)
 
Also habe ich das richtig verstanden? Das kommt ein String und das soll der und der Datentyp sein? oO
Das ist doch immer ein String ;)

jeweils true und false als rückgabewert ;)

Ne, es wird irgendeine Variabel angegeben.
Ich habs aber schon gelößt, denn die "Warnung" auf php.net is iwie falsch. Ich hab speedtest gemacht mit den beiden Methoden, die passen können.

Die beiden mir ersichtlichen Möglichkeiten die Datentypen 2er Vars zu vergleichen:
if(gettype($var1)==gettype($var2))
und
if(is_bool($var1)&&is_bool($var2)||is_int($var1)&&is_int($var2)||is_string($var1)&&is_string($var2)||is_object($var1)&&is_object($var2)||is_array($var1)&&is_array($var2))

Speedtest ergab aber, dass die erste Variante schneller ist(doppelt so schnell).
Eigentlich ist hiermit das Thema erledigt :P
Es sei denn jemand kann mir eine VIEL bessere Variante vorschlagen..

mfg
Lukas
 
Naja das das erste schneller ist sieht man auf den ersten Blick :s

nur die Warnung bezieht sich glaub ich auf php3 oder? ;)

Trotzdem nochmal zum Verständnis: du bekommst doch was übergeben oder? Aus einem HTML.-Doc? dann ist das doch nen String oO
 
Naja das das erste schneller ist sieht man auf den ersten Blick :s

nur die Warnung bezieht sich glaub ich auf php3 oder? ;)

Trotzdem nochmal zum Verständnis: du bekommst doch was übergeben oder? Aus einem HTML.-Doc? dann ist das doch nen String oO

Ne, nix ausm html doc. Alles noch in php.
also:
Code:
public function ChangeOption($name, $value)
{
   this->Option[$name] = $value;
}

Und davor die prüfung des Datentyps. $name ist also string und $value ist unterschiedlich.

Und zum speed:Man kann das nicht umbedingt vermuten, weil bei php.net das hier steht:
Außerdem ist diese Methode langsam, da sie einen Vergleich von Zeichenketten benutzt. Verwenden Sie stattdessen die is_*-Funktionen.
Und naja ich hab kp worauf sich die warnung bezieht^^

mfg
Lukas
 
Zurück