5 Stimmen

Verwendung von settype in PHP anstelle von typecasting mit Klammern, Was ist der Unterschied?

In PHP kann man etwas als Objekt typisieren, z.B. so; (object) oder man kann settype($var, "object") verwenden - aber meine Frage ist, was ist der Unterschied zwischen den beiden?

Welche ist effizienter / besser zu verwenden? Im Moment finde ich mit (Objekt) tut die Arbeit, aber wundern, warum es eine settype Funktion als gut ist.

20voto

Casting ändert, als was die Variable im aktuellen Kontext behandelt wird, settype ändert sie dauerhaft.

$value = "100"; //Value is a string
echo 5 + (int)$value; //Value is treated like an integer for this line
settype($value,'int'); //Value is now an integer

Im Grunde ist settype eine Abkürzung für:

$value = (type)$value;

7voto

AgentConundrum Punkte 19890

settype() ändert die tatsächliche Variable, die übergeben wurde, nicht aber die Klammerung.

Wenn Sie settype en $var in eine ganze Zahl zu ändern, wird der Dezimalteil dauerhaft verloren gehen:

$var = 1.2;
settype($var, "integer");
echo $var; // prints 1, because $var is now an integer, not a float

Wenn Sie nur einen Cast durchführen, bleibt die ursprüngliche Variable unverändert.

$var = 1.2;
$var2 = (integer) $var;
echo $var; // prints 1.2, because $var didn't change type and is still a float
echo $var2; // prints 1

1voto

Josh Punkte 63

Es ist erwähnenswert, dass settype den Variablentyp NICHT dauerhaft ändert. Wenn Sie das nächste Mal den Wert der Variable setzen, ändert PHP auch ihren Typ.

$value = "100"; //Value is a string
echo 5 + (int)$value; //Value is treated like an integer for this line
settype($value,'int'); //Value is now an integer
$value = "Hello World"; //Now value is a string
$value = 7; // Now value is an integer

Schriftjonglage kann frustrierend sein, aber wenn Sie verstehen, was passiert, und Ihre Möglichkeiten kennen, können Sie es in den Griff bekommen. Verwenden Sie var_dump, um den Typ der Variablen und andere nützliche Informationen zu erhalten.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X