Wie konvertiere ich den Wert einer PHP-Variable in einen String?
Ich suchte nach etwas Besserem als der Verkettung mit einer leeren Zeichenfolge:
$myText = $myVar . '';
Wie die ToString()
Methode in Java oder .NET.
Wie konvertiere ich den Wert einer PHP-Variable in einen String?
Ich suchte nach etwas Besserem als der Verkettung mit einer leeren Zeichenfolge:
$myText = $myVar . '';
Wie die ToString()
Methode in Java oder .NET.
Ich denke, diese Frage ist ein wenig irreführend, denn, toString() in Java ist nicht nur ein Weg, um etwas in einen String zu verwandeln. Das ist es, was Gießen via (string) oder String.valueOf() tut, und es funktioniert auch in PHP.
// Java
String myText = (string) myVar;
// PHP
$myText = (string) $myVar;
Beachten Sie, dass dies problematisch sein kann, da Java typsicher ist ( siehe hier für weitere Details ).
Aber wie gesagt, das ist Casting und daher nicht das Äquivalent zu Javas toString().
toString in Java nicht einfach ein Objekt in einen String umwandelt. Stattdessen erhalten Sie die String-Darstellung . Und das ist es, was __toString() in PHP tut.
// Java
class SomeClass{
public String toString(){
return "some string representation";
}
}
// PHP
class SomeClass{
public function __toString()
{
return "some string representation";
}
}
Und von der anderen Seite:
// Java
new SomeClass().toString(); // "Some string representation"
// PHP
strval(new SomeClass); // "Some string representation"
Was meine ich mit "die String-Darstellung geben"? Stellen Sie sich eine Klasse für eine Bibliothek mit Millionen von Büchern vor.
Beides sind valide Ansätze, aber mit sehr unterschiedlichen Zielen. Keiner von beiden ist eine perfekte Lösung für jeden Fall, und Sie müssen klug entscheiden, welcher Ansatz für Ihre Bedürfnisse besser geeignet ist.
Sicher, es gibt noch mehr Möglichkeiten:
$no = 421337 // A number in PHP
$str = "$no"; // In PHP, stuff inside "" is calculated and variables are replaced
$str = print_r($no, true); // Same as String.format();
$str = settype($no, 'string'); // Sets $no to the String Type
$str = strval($no); // Get the string value of $no
$str = $no . ''; // As you said concatenate an empty string works too
Alle diese Methoden geben einen String zurück, wobei einige von ihnen intern __toString verwenden und einige andere an Objekten scheitern. Werfen Sie einen Blick auf die PHP-Dokumentation für weitere Einzelheiten.
Eine andere Möglichkeit ist die Verwendung des eingebauten settype Funktion:
<?php
$foo = "5bar"; // string
$bar = true; // boolean
settype($foo, "integer"); // $foo is now 5 (integer)
settype($bar, "string"); // $bar is now "1" (string)
?>
Dies führt im Gegensatz zur Typisierung tatsächlich eine Konvertierung der Variablen durch und ermöglicht es Ihnen, eine allgemeine Methode zur Konvertierung in mehrere Typen zu verwenden.
Zusätzlich zu der von Thomas G. Mayfield gegebenen Antwort:
Wenn Sie dem Link zum String Casting Manual folgen, gibt es einen Sonderfall, der sehr wichtig zu verstehen ist:
(string) ist vorzuziehen, insbesondere wenn Ihre Variable $a ein Objekt ist, denn PHP folgt dem Casting Protokoll entsprechend seinem Objektmodell durch den Aufruf __toString() magische Methode (falls eine solche in der Klasse definiert ist, von der $a instanziert wird).
PHP macht etwas Ähnliches wie
function castToString($instance)
{
if (is_object($instance) && method_exists($instance, '__toString')) {
return call_user_func_array(array($instance, '__toString'));
}
}
El (Zeichenfolge) Casting-Operation ist eine empfohlene Technik für die PHP5+ Programmierung, die den Code objektorientierter macht. IMO ist dies ein schönes Beispiel für die Ähnlichkeit (oder den Unterschied) des Designs zu anderen OOP-Sprachen wie Java/C#/etc., d.h. auf seine eigene, spezielle PHP-Art (wann immer es zum Guten oder zum Schlechten ist).
Einige, wenn nicht alle, der Methoden in den vorherigen Antworten schlagen fehl, wenn die beabsichtigte String-Variable ein führende Null zum Beispiel, 077543 .
Der Versuch, eine solche Variable zu konvertieren, schlägt fehl, da die Variable in Basis 8 (oktal) .
All dies wird die $str
haben einen Wert von 32611 :
$no = 077543
$str = (string)$no;
$str = "$no";
$str = print_r($no,true);
$str = strval($no);
$str = settype($no, "integer");
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.