567 Stimmen

PHP-Äquivalent von .NET/Java's toString()

Wie konvertiere ich den Wert einer PHP-Variablen in einen String?

Ich habe nach etwas Besserem gesucht als der Konkatenation mit einem leeren String:

$myText = $myVar . '';

Ähnlich der ToString() Methode in Java oder .NET.

3 Stimmen

Ich würde json_encode($myText) verwenden. Ich habe festgestellt, dass die vorgeschlagenen Lösungen print_r und (string)var gut für skalare Werte und einfache Objekte funktionieren. Für komplexe Variablen, Klassen oder Objekte ziehe ich, wenn ein vollständiges __toString() nicht definiert ist, json_encode vor.

789voto

Tom Mayfield Punkte 6195

Sie können die Umwandlungsoperatoren verwenden:

$myText = (string)$myVar;

Im Strings Abschnitt des PHP-Handbuchs finden Sie weitere Details zur Zeichenfolgenumwandlung, einschließlich der speziellen Behandlung von Booleschen Werten und Nullen.

14 Stimmen

Objekt der Klasse Foo konnte nicht in einen String umgewandelt werden. Gibt es eine allgemeine Lösung, die alles (Arrays+Objekte+was auch immer) in einen String umwandeln kann?

3 Stimmen

2 Stimmen

Hinweis: Dies wird eine PHP-Meldung erzeugen, wenn es bei Arrays verwendet wird.

312voto

Ross Punkte 44536

Dies wird mit Typumwandlung gemacht:

$strvar = (string) $var; // Konvertiert zu String
echo $var; // Wird implizit zu einem String konvertiert
var_dump($var); // Zeigt den tatsächlichen Typ der Variablen an

In einer Klasse können Sie definieren, was ausgegeben wird, indem Sie die magische Methode __toString verwenden. Ein Beispiel finden Sie unten:

class Flaschen {
    public function __toString()
    {
        return 'Neunundneunzig grüne Flaschen';
    }
}

$ex = new Flaschen;
var_dump($ex, (string) $ex);
// Gibt zurück: Instanz von Flaschen und "Neunundneunzig grüne Flaschen"

Weitere Beispiele für Typumwandlung:

$i = 1;

// int 1
var_dump((int) $i);

// bool true
var_dump((bool) $i);

// string "1"
var_dump((string) 1);

127voto

Cedric Punkte 4770

Verwenden Sie print_r:

$myText = print_r($myVar,true);

Sie können es auch so verwenden:

$myText = print_r($myVar,true)."foo bar";

Dies setzt $myText auf einen String, wie:

array (
  0 => '11',
)foo bar

Verwenden Sie var_export, um etwas mehr Informationen (mit Variablentypen, usw.) zu erhalten:

$myText = var_export($myVar,true);

2 Stimmen

"Wenn der Rückgabeparameter TRUE ist, gibt [print_r] einen String zurück." Da print_r eine schöne Möglichkeit ist, Objekte, Arrays (und auch Zahlen/Strings) auszugeben, ist es ein guter Weg, ein Objekt in einen für Menschen lesbaren String zu verwandeln.

1 Stimmen

Für Neulinge: Der true-Teil ist wesentlich! Ich habe verschiedene Methoden der Zeichenkettenkonvertierung ausprobiert, einschließlich print_r, und war von allen enttäuscht. Dann entdeckte ich den true-Parameter (lesen Sie die Dokumentation, um zu erfahren, warum er funktioniert).

58voto

Joel Larson Punkte 597

Sie können entweder Typecasting verwenden:

$var = (string)$varname;

oder StringValue:

$var = strval($varname);

oder SetType:

$success = settype($varname, 'string');
// $varname selbst wird zu einem String

Sie alle funktionieren für dieselbe Sache in Bezug auf Type-Juggling.

0 Stimmen

Strval($varname) funktioniert für mich, besonders wenn der Wert als Typ "Variant" zurückgegeben wird und in einen String oder eine Zahl umgewandelt werden muss.

0 Stimmen

strval() ist das, wonach ich gesucht habe, weil ich es mit array_walk verwenden wollte. Zum Beispiel $array = array('cat',$object); array_walk($array,'strval'); // $array = array('cat',$object->__ toString)

34voto

Chris Punkte 6681

Wie konvertiere ich den Wert einer PHP Variable zu einem String?

Ein Wert kann mit dem (string) Cast oder der strval() Funktion in einen String umgewandelt werden. (Edit: Wie auch von Thomas erwähnt).

Es sollte auch automatisch für Sie in einen String umgewandelt werden, wenn Sie es als String verwenden.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X