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.

28voto

opensas Punkte 56212

Du suchst nach strval:

string strval ( mixed $var )

Holen Sie sich den Zeichenfolgenwert einer Variablen. Weitere Informationen zur Konvertierung in eine Zeichenfolge finden Sie in der Dokumentation zu string.

Diese Funktion führt keine Formatierung des zurückgegebenen Werts durch. Wenn Sie nach einer Möglichkeit suchen, einen numerischen Wert als Zeichenfolge zu formatieren, sehen Sie bitte sprintf() oder number_format().

3 Stimmen

Das ist tatsächlich sehr hilfreich, denn ich wollte alle Zahlen in Strings umwandeln, ohne eine benutzerdefinierte Rückruffunktion zu verwenden. $strings = array_map('strval', $my_numbers);

0 Stimmen

Dies ist die einzige Antwort, die mit array_map und String-Callables im Allgemeinen funktioniert.

18voto

Für Primitive nutzen Sie einfach (string)$var oder drucken Sie diese Variable sofort aus. PHP ist eine dynamisch typisierte Sprache und die Variable wird automatisch in einen String umgewandelt.

Wenn Sie Objekte in Strings umwandeln möchten, müssen Sie die Methode __toString() definieren, die einen String zurückgibt. Diese Methode darf keine Ausnahmen werfen.

15voto

Mark Biek Punkte 140395

Es sollte funktionieren, es in doppelte Anführungszeichen zu setzen:

$myText = "$myVar";

0 Stimmen

Das funktioniert, aber ich weiß nicht, ob es der Standardweg ist, dies in PHP zu tun.

0 Stimmen

Es ist eine sehr standardmäßige Art, es in Bash zu machen.

0 Stimmen

Diese Methode funktioniert, wenn $myVar ein Objekt der Klasse mit __toString oder Skalartyp ist. In anderen Fällen wird ein Fehler generiert.

11voto

Daan Punkte 7235

Ich denke, es ist erwähnenswert, dass Sie jedes Ergebnis (wie print_r, var_dump) in einer Variable speichern können, indem Sie Pufferung des Ergebnisses verwenden:

Dank an: Wie kann ich das Ergebnis von var_dump in einen String erfassen?

1 Stimmen

Es ist erwähnenswert, dass Sie das mit print_r nicht benötigen. Verwenden Sie einfach das Überschreiben, um als Zeichenkette zurückzugeben.

1 Stimmen

Eine bessere Methode wäre es, $result = var_export($someVar, true) ohne ob zu verwenden.

7voto

Yauhen Yakimovich Punkte 12897

Abgesehen von der Antwort von Thomas G. Mayfield:

Wenn Sie dem Link zum String-Casting-Handbuch folgen, gibt es einen besonderen Fall, den es zu verstehen gilt:

(string) Cast ist besonders empfehlenswert, insbesondere wenn Ihre Variable $a ein Objekt ist, da PHP das Casting-Protokoll gemäß seinem Objektmodell befolgt, indem es die __toString() Magie-Methode aufruft (falls diese in der Klasse definiert ist, von der $a instanziiert ist).

PHP macht etwas Ähnliches wie

function castToString($instance) 
{ 
    if (is_object($instance) && method_exists($instance, '__toString')) {
        return call_user_func_array(array($instance, '__toString'));
    }
}

Die (string) Casting-Operation ist eine empfohlene Technik für die PHP5+ Programmierung, die den Code objektorientierter macht. Meiner Meinung nach ist dies ein schönes Beispiel für Designähnlichkeit (Unterschied) zu anderen OOP-Sprachen wie Java/C# usw., d.h. auf seine eigene spezielle PHP-Weise (ob es gut ist oder nicht).

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