PHP ist lose geschrieben. Was einmal eine Ganzzahl war, kann auch eine Zeichenfolge sein, z. B. wenn Sie echoes sind (wird im sogenannten Zeichenfolgenkontext verwendet ).
hakre
2
@hakre yes php ist lose eingegeben und das Echo würde den Wert im String-Kontext drucken. Dies ändert jedoch nicht den Datentyp einer Variablen intern. Daher ist strval ($ variable) korrekt.
vivek_23
@Vivek: strval()ändert das auch nicht $variableintern.
hakre
2
Ich meinte $ variable = strval ($ variable);
vivek_23
Antworten:
781
Mit der strval()Funktion können Sie eine Zahl in eine Zeichenfolge konvertieren.
Aus Wartungssicht ist es offensichtlich, was Sie versuchen, und nicht einige der anderen esoterischeren Antworten. Natürlich hängt es von Ihrem Kontext ab.
$var =5;// Inline variable parsing
echo "I'd like {$var} waffles";// = "I'd like 5 waffles// String concatenation
echo "I'd like ".$var." waffles";// I'd like 5 waffles// Explicit cast
$items =(string)$var;// $items === "5";// Function call
$items = strval($var);// $items === "5";
Guter Punkt. Ich habe dort einige mysql_escape_string-Funktionen eingefügt, um es zu bereinigen.
Chris Thompson
6
bearbeitet, da mysql_escape_string veraltet ist, da der Zeichensatz ignoriert wird.
Kzqai
7
@ Kzqai für alle, die sich dieses Beispiel ansehen, um Injektionsangriffe zu vermeiden, würde ich sagen, geben Sie Ihre Versuche auf, Strings zu entkommen und verwenden Sie vorbereitete Anweisungen
chacham15
22
Nach 5 Jahren entfernte ich schließlich das SQL-Beispiel, da es nicht notwendig war, die Frage zu beantworten, und führte zu Verwirrung.
Chris Thompson
3
Warnung!! Wenn Sie bestimmte Zahlen übergeben, rundet php diese bei der Konvertierung in string: strval(0.999999997)return 1.
Danielson317
86
Es gibt viele Möglichkeiten, dies zu tun.
Zwei Beispiele:
$str =(string) $int;
$str ="$int";
Weitere Informationen finden Sie im PHP-Handbuch zum Jonglieren von Typen .
@Jazzerus Wenn $ var gleich 0 (Null) ist, wird dies eine leere Zeichenfolge. Problematisch.
Simon Forsberg
5
Das Konvertieren 0in ist ""möglicherweise nicht schlecht. es hängt wirklich von der Anwendung ab. Das heißt, Sie machen einen guten Punkt.
WNRosenberg
2
$ f = 0; Echo "$ f"; funktioniert gut bei mir, die Null bleibt immer noch Null. Daher betrachte ich "$ var" als eine intelligente / nützliche Antwort. Das Ausführen von 9999999-Schleifen (Zeichenfolge) dauert 0,4046459 ... Sek., Während "$ var" 0,3725229 dauert ... kein Unterschied.
Melsi
45
$foo =5;
$foo = $foo ."";
Jetzt $fooist eine Zeichenfolge.
Aber vielleicht möchten Sie sich an das Casting gewöhnen. Da Casting der richtige Weg ist, um so etwas zu erreichen:
$foo =5;
$foo =(string)$foo;
Eine andere Möglichkeit besteht darin, in Anführungszeichen zu setzen:
So unglaublich seltsam, dass wir beide 5 ausgewählt haben. Außerdem ist + Java.
Karim79
Ich denke, Sie verwechseln dort Ihre Verkettungssyntax zwischen den Sprachen.
Jason
6
Ich würde mich zum Casting neigen, einfach weil es Ihre Absichten deutlich macht. Casting hat nur einen Zweck: den Typ zu ändern. Die anderen Beispiele können in einigen Zusammenhängen fast wie Fehler aussehen.
Frank Farmer
Arbeitete für mich .. danke viel
zeetit
10
Es gibt verschiedene Möglichkeiten, eine Ganzzahl in PHP in eine Zeichenfolge zu "konvertieren".
Die traditionelle Art der Informatik wäre, die Variable als Zeichenfolge zu konvertieren:
$int =5;
$int_as_string =(string) $int;
echo $int .' is a '. gettype($int)."\n";
echo $int_as_string .' is a '. gettype($int_as_string)."\n";
Sie können auch die implizite Typkonvertierung und Zeichenfolgeninterpolation von PHP nutzen:
$int =5;
echo $int .' is a '. gettype($int)."\n";
$int_as_string ="$int";
echo $int_as_string .' is a '. gettype($int_as_string)."\n";
$string_int = $int.'';
echo $int_as_string .' is a '. gettype($int_as_string)."\n";
Schließlich kann ähnlich wie oben jede Funktion, die eine Zeichenfolge akzeptiert und zurückgibt, zum Konvertieren und zur Ganzzahl verwendet werden. Folgendes berücksichtigen:
$int =5;
echo $int .' is a '. gettype($int)."\n";
$int_as_string = trim($int);
echo $int_as_string .' is a '. gettype($int_as_string)."\n";
Ich würde die letzte Option nicht empfehlen, aber ich habe Code in freier Wildbahn gesehen, der sich auf dieses Verhalten stützte, und dachte, ich würde ihn weitergeben.
Wie die Antworten hier gut zeigen, gibt es mehrere Möglichkeiten. In PHP müssen Sie dies jedoch selten tun. Die "dogmatische Art", PHP zu schreiben, besteht darin, sich auf das lose Schreibsystem der Sprache zu verlassen, das den Typ nach Bedarf transparent erzwingt. Bei ganzzahligen Werten ist dies normalerweise problemlos möglich. Sie sollten jedoch sehr vorsichtig mit Gleitkommawerten sein.
Ich glaube nicht, dass PHP eine ganze Zahl zwingen wird, ständig Zeichenfolgen zu setzen. Es wird es tun, strlen(12345);aber nicht für $x = 12345; echo $x[2];Alle diese Casting-Funktionen sind sehr nützlich und viele Programmierer überprüfen ihre Typen immer mehr.
Ich würde sagen, es hängt vom Kontext ab. strval () oder der Casting-Operator (string) können verwendet werden. In den meisten Fällen entscheidet PHP jedoch, was für Sie gut ist, wenn Sie es beispielsweise mit echo oder printf verwenden ...
Eine kleine Anmerkung: die () benötigt einen String und zeigt kein int an :)
Re " string ": wörtlich oder der Typ? Oder etwas anderes? Können Sie es klarer machen (indem Sie Ihre Antwort bearbeiten )?
Peter Mortensen
Vielen Dank für den Kommentar @ Peter Mortensen Der Rückgabetyp "STRING" bedeutet, dass Ihr Wert als Zeichenfolge in eine neue Variable konvertiert werden sollte. Deshalb habe ich String bearbeitet
echo
es sind (wird im sogenannten Zeichenfolgenkontext verwendet ).strval()
ändert das auch nicht$variable
intern.Antworten:
Mit der
strval()
Funktion können Sie eine Zahl in eine Zeichenfolge konvertieren.Aus Wartungssicht ist es offensichtlich, was Sie versuchen, und nicht einige der anderen esoterischeren Antworten. Natürlich hängt es von Ihrem Kontext ab.
quelle
strval(0.999999997)
return1
.Es gibt viele Möglichkeiten, dies zu tun.
Zwei Beispiele:
Weitere Informationen finden Sie im PHP-Handbuch zum Jonglieren von Typen .
quelle
0
in ist""
möglicherweise nicht schlecht. es hängt wirklich von der Anwendung ab. Das heißt, Sie machen einen guten Punkt.Jetzt
$foo
ist eine Zeichenfolge.Aber vielleicht möchten Sie sich an das Casting gewöhnen. Da Casting der richtige Weg ist, um so etwas zu erreichen:
Eine andere Möglichkeit besteht darin, in Anführungszeichen zu setzen:
quelle
Es gibt verschiedene Möglichkeiten, eine Ganzzahl in PHP in eine Zeichenfolge zu "konvertieren".
Die traditionelle Art der Informatik wäre, die Variable als Zeichenfolge zu konvertieren:
Sie können auch die implizite Typkonvertierung und Zeichenfolgeninterpolation von PHP nutzen:
Schließlich kann ähnlich wie oben jede Funktion, die eine Zeichenfolge akzeptiert und zurückgibt, zum Konvertieren und zur Ganzzahl verwendet werden. Folgendes berücksichtigen:
Ich würde die letzte Option nicht empfehlen, aber ich habe Code in freier Wildbahn gesehen, der sich auf dieses Verhalten stützte, und dachte, ich würde ihn weitergeben.
quelle
Alle diese Antworten sind großartig, aber sie alle geben Ihnen eine leere Zeichenfolge zurück, wenn der Wert Null ist.
Versuche Folgendes:
quelle
Verwenden:
Oder es könnte sein:
Oder:
quelle
Es gibt viele mögliche Konvertierungsmöglichkeiten:
quelle
Sie können entweder den Punktoperator verwenden und eine Zeichenfolge damit verketten (und sie wird in eine Zeichenfolge umgewandelt):
Oder genauer gesagt, Sie können einfach die Ganzzahl in eine Zeichenfolge umwandeln:
quelle
Wie die Antworten hier gut zeigen, gibt es mehrere Möglichkeiten. In PHP müssen Sie dies jedoch selten tun. Die "dogmatische Art", PHP zu schreiben, besteht darin, sich auf das lose Schreibsystem der Sprache zu verlassen, das den Typ nach Bedarf transparent erzwingt. Bei ganzzahligen Werten ist dies normalerweise problemlos möglich. Sie sollten jedoch sehr vorsichtig mit Gleitkommawerten sein.
quelle
strlen(12345);
aber nicht für$x = 12345; echo $x[2];
Alle diese Casting-Funktionen sind sehr nützlich und viele Programmierer überprüfen ihre Typen immer mehr.Sie können einfach Folgendes verwenden:
quelle
Ich würde sagen, es hängt vom Kontext ab. strval () oder der Casting-Operator (string) können verwendet werden. In den meisten Fällen entscheidet PHP jedoch, was für Sie gut ist, wenn Sie es beispielsweise mit echo oder printf verwenden ...
Eine kleine Anmerkung: die () benötigt einen String und zeigt kein int an :)
quelle
So wird das Echo sein Zeichenfolge .
quelle
ist schneller als
quelle