Start · Sprachen · PHP · Referenz · strval

strval

Funktion

Gibt die String-Repräsentation einer Variable zurück und konvertiert dabei Zahlen, Booleans und andere Skalartypen in einen String.

seit PHP 4.0.0 Kategorie: type

Signatur

strval(mixed $value): string

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: true wird zu "1", false zu "" (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

Typ
string
Beschreibung
Gibt die String-Darstellung des übergebenen Wertes zurück. Bei 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);
string(2) "42" string(4) "3.14" string(1) "1" string(0) "" string(0) "" string(5) "Hallo"

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
1.299,90 EUR

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;
}
id: 7 menge: 3.5 aktiv: 1

// 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.