strval

strval($value)

Zamienia wartość na ciąg znaków. Robi to samo co rzutowanie (string) $value. Jako funkcja przydaje się tam, gdzie potrzebna jest nazwa funkcji – na przykład w array_map().

Parametry

  • $value – liczba, wartość logiczna, null, ciąg znaków albo obiekt z metodą __toString().

Przykłady

var_dump(strval(42)); // string(2) "42"
var_dump(strval(1.50)); // string(3) "1.5"
var_dump(strval(3.0)); // string(1) "3"
// true to "1", false i null to pusty ciąg znaków
var_dump(strval(true)); // string(1) "1"
var_dump(strval(false)); // string(0) ""
var_dump(strval(null)); // string(0) ""
// to samo co rzutowanie
var_dump(strval(42) === (string) 42); // bool(true)
// zamiana wszystkich elementów tablicy
var_dump(array_map("strval", array(1, 2.5)) === array("1", "2.5")); // bool(true)
// bardzo duże i bardzo małe liczby są zamieniane na zapis wykładniczy
echo strval(1e25); // 1.0E+25
echo strval(0.00001); // 1.0E-5
// obiekt z metodą __toString
class ProductPrice {
  private $amount = 449;
  public function __toString() { return $this->amount . " zł"; }
}
echo strval(new ProductPrice()); // 449 zł
// liczby dla czytelników sformatuje number_format
echo number_format(1234.5, 2, ",", " "); // 1 234,50

Na co uważać

  • false zmienia się w pusty ciąg znaków, nie w "0". Wartość true/false do wyświetlenia zamień jawnie, na przykład na "tak" albo "nie".
  • Tablicy nie da się zamienić – wynikiem jest tekst "Array" i komunikat o błędzie (w PHP 7 Notice, w PHP 8 Warning). Tablice łączy implode(), do szukania błędów są print_r() albo json_encode().
  • Obiekt bez metody __toString() powoduje błąd (Error).
  • W PHP 7 zamiana liczby dziesiętnej zależy od ustawień regionalnych (locale): po setlocale() z polskim locale strval(1.5) zwraca tekst "1,5" z przecinkiem, z którym nie da się liczyć ani zbudować zapytania SQL. Od PHP 8.0 zamiana zawsze używa kropki.
  • Domyślnie liczby dziesiętne są zamieniane z dokładnością do 14 cyfr znaczących (dyrektywa precision). Dokładną liczbę miejsc po przecinku ustalą number_format() albo sprintf().

Powiązane funkcje:
is_string()
number_format()
sprintf()