Signatur
Beschreibung
strval() konvertiert einen beliebigen skalaren Wert in seine String-Darstellung. Die Funktion ist der expliziten Typumwandlung (string) $value gleichwertig und wird vor allem dann verwendet, wenn die Absicht einer Konvertierung im Code deutlich hervorgehoben werden soll.
Folgende Konvertierungsregeln gelten:
- Boolesche Werte:
truewird zu"1",falsezu""(leerer String). - Ganzzahlen und Gleitkommazahlen: werden in ihre dezimale Textdarstellung umgewandelt.
- null: wird zu
""(leerer String). - Strings: werden unverändert zurückgegeben.
Objekte können nicht direkt mit strval() konvertiert werden, es sei denn, die Klasse implementiert die magische Methode __toString(). Arrays können ebenfalls nicht konvertiert werden; der Versuch führt zu einer E_NOTICE-Meldung (bis PHP 7.4) bzw. einem TypeError (ab PHP 8.0).
In der Praxis ist strval() nützlich, wenn ein Wert aus einer Quelle kommt, die unterschiedliche Typen zurückgeben kann (z. B. Datenbankabfragen, externe APIs), und sichergestellt werden muss, dass ein String-Typ vorliegt, bevor stringspezifische Operationen ausgeführt werden.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $value Pflicht | mixed | Der zu konvertierende Wert. Erlaubt sind skalare Typen (int, float, bool, string, null) sowie Objekte mit implementierter __toString()-Methode. |
Rückgabewert
false und null wird ein leerer String zurückgegeben, bei true der String "1".Beispiele
Konvertierung verschiedener Typen in einen String
<?php
$intVal = strval(42); // '42'
$floatVal = strval(3.14); // '3.14'
$boolTrue = strval(true); // '1'
$boolFalse = strval(false); // ''
$nullVal = strval(null); // ''
$strVal = strval('Hallo'); // 'Hallo'
var_dump($intVal, $floatVal, $boolTrue, $boolFalse, $nullVal, $strVal);
Verwendung mit einem Objekt, das __toString() implementiert
<?php
class Preis
{
public function __construct(private float $betrag, private string $waehrung = 'EUR') {}
public function __toString(): string
{
return number_format($this->betrag, 2, ',', '.') . ' ' . $this->waehrung;
}
}
$preis = new Preis(1299.9);
echo strval($preis); // Gibt '1.299,90 EUR' aus
Datenbankwert sicher in String umwandeln
<?php
// Simulierter Datenbankwert (könnte int, float oder string sein)
$rohdaten = ['id' => 7, 'menge' => 3.5, 'aktiv' => true];
foreach ($rohdaten as $schluessel => $wert) {
$textWert = strval($wert);
echo $schluessel . ': ' . $textWert . PHP_EOL;
}
// Wichtig · Fallstricke
Arrays und nicht-konvertierbare Objekte: Der Versuch, ein Array oder ein Objekt ohne __toString() zu konvertieren, führt seit PHP 8.0 zu einem TypeError. In älteren PHP-Versionen wurde lediglich eine E_NOTICE ausgegeben und der String "Array" zurückgegeben.
Gleitkommazahlen: Die Genauigkeit der Darstellung hängt von der INI-Einstellung precision (Standard: 14) ab. Für eine kontrollierte Formatierung empfiehlt sich stattdessen number_format() oder sprintf().
Typumwandlung vs. strval: strval($x) und (string) $x sind funktional identisch. Welche Variante bevorzugt wird, ist meist eine Frage des Code-Stils. In stark typisierten Codebasen (z. B. mit Psalm oder PHPStan) kann strval() besser lesbar und analysierbar sein.