/ / Verwenden von Settype in PHP anstelle von Typecasting in Klammern. Was ist der Unterschied? - PHP, Casting, Typumwandlung

Verwenden von settype in PHP anstelle von Typumwandlung mit Klammern - PHP, Casting, Typumwandlung

In PHP können Sie so etwas wie ein Objekt typisieren. (Objekt) oder Sie können Settype ($ var, "Objekt") verwenden - aber meine Frage ist, was ist der Unterschied zwischen den beiden?

Welches ist effizienter / besser zu nutzen? Im Moment finde ich using (object) erledigt den Job, frage mich aber, warum es auch eine settype-Funktion gibt.

Antworten:

17 für die Antwort № 1

Durch das Casting wird geändert, wie die Variable im aktuellen Kontext behandelt wird, durch das Settype wird sie dauerhaft geändert.

$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

Grundsätzlich ist Settype eine Abkürzung für:

$value = (type)$value;

4 für die Antwort № 2

settype() Ändert die tatsächliche Variable, die übergeben wurde, das Casting in Klammern nicht.

Wenn du benutzt settype auf $var Wenn Sie es in eine Ganzzahl ä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 eine Umwandlung 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