Start · Sprachen · PHP · Referenz · settype

settype

Funktion

Wandelt eine Variable in den angegebenen Typ um und gibt <code>true</code> bei Erfolg zurück.

seit PHP 4.0.0 Kategorie: type

Signatur

settype(mixed &$var, string $type): bool

Beschreibung

settype() konvertiert die übergebene Variable direkt in den angegebenen PHP-Typ. Die Funktion arbeitet in-place, d. h. die Variable wird direkt verändert, ohne dass eine neue Variable erzeugt wird. Das unterscheidet sie von expliziten Casts wie (int) oder (bool), die eine neue Variable zurückgeben.

Gültige Werte für den Parameter type sind: "bool" (oder "boolean"), "int" (oder "integer"), "float" (oder "double"), "string", "array", "object" und "null". Die Typbezeichnungen sind dabei nicht Groß-/Kleinschreibungs-sensitiv.

Typischer Einsatz ist die Normalisierung von Eingabedaten, etwa bei Formulardaten oder beim Lesen aus einer Datenbank, wenn Werte als Zeichenketten geliefert werden, aber als Integer oder Float weiterverarbeitet werden sollen. In vielen modernen Szenarien sind jedoch explizite Casts oder intval(), floatval() und strval() besser lesbar.

Schlägt die Konvertierung fehl (z. B. bei einem unbekannten Typnamen), gibt settype() false zurück und die Variable bleibt unverändert.

Parameter

Name Typ Default Beschreibung
$var Pflicht mixed Die Variable, deren Typ geändert werden soll. Wird als Referenz übergeben und direkt verändert.
$type Pflicht string Der Zieltyp als Zeichenkette. Erlaubte Werte: "bool", "boolean", "int", "integer", "float", "double", "string", "array", "object", "null".

Rückgabewert

Typ
bool
Beschreibung
Gibt true zurück, wenn die Konvertierung erfolgreich war, andernfalls false (z. B. bei einem unbekannten Typnamen).

Beispiele

Einfache Typumwandlung von String zu Integer

<?php
$wert = "42";
var_dump($wert); // string(2) "42"

settype($wert, "int");
var_dump($wert); // int(42)

$preis = "19.99";
settype($preis, "float");
var_dump($preis); // float(19.99)
?>
string(2) "42" int(42) float(19.99)

Formulardaten normalisieren

<?php
// Simuliert Formulardaten (alles Strings)
$formDaten = [
    'alter'     => '28',
    'aktiv'     => '1',
    'umsatz'    => '1234.56',
    'bemerkung' => 'Kein Eintrag',
];

settype($formDaten['alter'],     'int');
settype($formDaten['aktiv'],     'bool');
settype($formDaten['umsatz'],    'float');

var_dump($formDaten['alter']);     // int(28)
var_dump($formDaten['aktiv']);     // bool(true)
var_dump($formDaten['umsatz']);    // float(1234.56)
var_dump($formDaten['bemerkung']); // string(12) "Kein Eintrag"
?>
int(28) bool(true) float(1234.56) string(12) "Kein Eintrag"

Rückgabewert bei ungültigem Typnamen

<?php
$var = "test";
$ergebnis = settype($var, "ungueltigerTyp");
var_dump($ergebnis); // bool(false)
var_dump($var);      // string(4) "test" — unverändert
?>
bool(false) string(4) "test"

// Wichtig · Fallstricke

Sicherheitshinweis: settype() validiert keine Eingaben inhaltlich — ein String "abc" wird beim Umwandeln in int stillschweigend zu 0, ohne Fehler oder Warnung. Für eine robuste Validierung von Benutzereingaben sollte filter_var() mit geeigneten Filtern verwendet werden.

Kein Casting-Ersatz für alle Fälle: Das Umwandeln nach "null" setzt die Variable auf null. Das Umwandeln nach "array" verpackt einen Skalarwert in ein Array mit einem Element. Das Umwandeln nach "object" erzeugt ein stdClass-Objekt.

In modernem PHP-Code werden häufig explizite Casts ((int), (float), (bool)) oder typisierte Funktionen wie intval(), floatval() bevorzugt, da sie lesbarer sind und keine Referenzübergabe erfordern.