PHP diketik secara longgar. Apa itu bilangan bulat sekali, bisa menjadi string juga, misalnya ketika Anda echoitu (digunakan dalam konteks string yang disebut ).
hakre
2
@hakre ya php diketik dengan longgar dan bergema akan mencetak nilai dalam konteks string. Tapi ini tidak mengubah tipe data variabel secara internal. Karenanya, strval ($ variabel) benar.
vivek_23
@Vivek: strval()tidak mengubah $variableinternal juga.
hakre
2
Maksud saya $ variable = strval ($ variable);
vivek_23
Jawaban:
781
Anda dapat menggunakan strval()fungsi ini untuk mengonversi angka menjadi string.
Dari perspektif pemeliharaan jelas apa yang Anda coba lakukan daripada beberapa jawaban yang lebih esoteris lainnya. Tentu saja, itu tergantung pada konteks Anda.
$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";
Poin yang bagus. Saya melemparkan beberapa fungsi mysql_escape_string di sana untuk membersihkannya.
Chris Thompson
6
diedit sejak mysql_escape_string sudah tidak digunakan lagi karena mengabaikan charset.
Kzqai
7
@Kzqai bagi siapa saja yang melihat contoh ini untuk mencoba dan menghindari serangan suntikan, saya akan mengatakan abaikan upaya Anda untuk melarikan diri dari string dan menggunakan pernyataan yang disiapkan
chacham15
22
Setelah 5 tahun saya akhirnya menghapus contoh SQL karena tidak perlu menjawab pertanyaan dan menimbulkan kebingungan.
Chris Thompson
3
Peringatan!! Jika Anda memasukkan angka-angka tertentu, php akan membulatkannya saat mengonversi ke string: strval(0.999999997)mengembalikan 1.
danielson317
86
Ada banyak cara untuk melakukan ini.
Dua contoh:
$str =(string) $int;
$str ="$int";
Lihat Manual PHP tentang Jenis Juggling untuk informasi lebih lanjut.
@Jazzerus Jika $ var sama dengan 0 (nol), itu menjadi string kosong. Bermasalah.
Simon Forsberg
5
Mengubah 0menjadi ""tidak buruk; itu sangat tergantung pada aplikasi. Yang mengatakan, Anda membuat poin yang bagus.
WNRosenberg
2
$ f = 0; gema "$ f"; berfungsi dengan baik dengan saya, nol tetap masih nol. Jadi saya menganggap "$ var" sebagai jawaban yang cerdas / berguna. Menjalankan 9999999 loop (string) membutuhkan 0,4046459 ... dtk sementara "$ var" membutuhkan 0,3725229 ... tidak ada perbedaan.
Melsi
45
$foo =5;
$foo = $foo ."";
Sekarang $fooadalah sebuah string.
Tapi, Anda mungkin ingin terbiasa dengan casting. Karena casting adalah cara yang tepat untuk mencapai sesuatu seperti itu:
Sangat aneh bahwa kami berdua memilih 5. Juga, + adalah java.
karim79
Saya pikir Anda sedang mencampur sintaksis gabungan Anda antara bahasa di sana.
jason
6
Saya akan condong ke arah casting, hanya karena itu membuat niat Anda sangat jelas. Casting memiliki satu dan hanya satu tujuan: untuk mengubah tipe. Contoh lain mungkin hampir terlihat seperti kesalahan, dalam beberapa konteks.
Frank Farmer
Bekerja untuk saya ..
terima kasih
10
Ada beberapa cara untuk "mengkonversi" integer ke string di PHP.
Cara ilmu komputer tradisional adalah dengan melemparkan variabel sebagai string:
$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";
Anda juga dapat memanfaatkan konversi tipe implisit PHP dan interpolasi string:
$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";
Akhirnya, mirip dengan yang di atas, fungsi apa pun yang menerima dan mengembalikan string dapat digunakan untuk mengkonversi dan integer. Pertimbangkan yang berikut ini:
$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";
Saya tidak akan merekomendasikan opsi terakhir, tetapi saya telah melihat kode di alam liar yang mengandalkan perilaku ini, jadi saya pikir saya akan meneruskannya.
Karena jawaban di sini menunjukkan dengan baik, ya, ada beberapa cara. Namun, dalam PHP Anda jarang benar-benar perlu melakukan itu. "Cara dogmatis" untuk menulis PHP adalah mengandalkan sistem pengetikan longgar bahasa, yang secara transparan akan memaksa jenis itu sesuai kebutuhan. Untuk nilai integer, ini biasanya tanpa masalah. Anda harus sangat berhati-hati dengan nilai floating point.
Saya tidak berpikir bahwa PHP akan memaksa integer ke string sepanjang waktu. Ini akan melakukannya untuk strlen(12345);tetapi tidak untuk $x = 12345; echo $x[2];Semua fungsi casting ini cukup berguna dan banyak programmer memeriksa tipe mereka lebih dan lebih.
Saya akan mengatakan itu tergantung pada konteksnya. strval () atau operator casting (string) dapat digunakan. Namun, dalam kebanyakan kasus, PHP akan memutuskan apa yang baik untuk Anda jika, misalnya, Anda menggunakannya dengan gema atau printf ...
Satu catatan kecil: die () membutuhkan string dan tidak akan menampilkan int :)
Re " string ": secara harfiah atau jenisnya? Atau sesuatu yang lain? Bisakah Anda membuatnya lebih jelas (dengan mengedit jawaban Anda )?
Peter Mortensen
Terima kasih atas komentar @ Peter Mortensen Itu adalah tipe pengembalian "STRING" berarti nilai Anda harus dikonversi sebagai string dalam variabel baru. jadi itu sebabnya saya mengedit string
echo
itu (digunakan dalam konteks string yang disebut ).strval()
tidak mengubah$variable
internal juga.Jawaban:
Anda dapat menggunakan
strval()
fungsi ini untuk mengonversi angka menjadi string.Dari perspektif pemeliharaan jelas apa yang Anda coba lakukan daripada beberapa jawaban yang lebih esoteris lainnya. Tentu saja, itu tergantung pada konteks Anda.
sumber
strval(0.999999997)
mengembalikan1
.Ada banyak cara untuk melakukan ini.
Dua contoh:
Lihat Manual PHP tentang Jenis Juggling untuk informasi lebih lanjut.
sumber
0
menjadi""
tidak buruk; itu sangat tergantung pada aplikasi. Yang mengatakan, Anda membuat poin yang bagus.Sekarang
$foo
adalah sebuah string.Tapi, Anda mungkin ingin terbiasa dengan casting. Karena casting adalah cara yang tepat untuk mencapai sesuatu seperti itu:
Cara lain adalah dengan merangkum dalam kutipan:
sumber
Ada beberapa cara untuk "mengkonversi" integer ke string di PHP.
Cara ilmu komputer tradisional adalah dengan melemparkan variabel sebagai string:
Anda juga dapat memanfaatkan konversi tipe implisit PHP dan interpolasi string:
Akhirnya, mirip dengan yang di atas, fungsi apa pun yang menerima dan mengembalikan string dapat digunakan untuk mengkonversi dan integer. Pertimbangkan yang berikut ini:
Saya tidak akan merekomendasikan opsi terakhir, tetapi saya telah melihat kode di alam liar yang mengandalkan perilaku ini, jadi saya pikir saya akan meneruskannya.
sumber
Semua jawaban ini bagus, tetapi mereka semua mengembalikan Anda string kosong jika nilainya nol.
Coba yang berikut ini:
sumber
Menggunakan:
Atau bisa juga:
Atau:
sumber
Ada banyak cara konversi yang mungkin:
sumber
Anda bisa menggunakan operator periode dan menggabungkan string ke dalamnya (dan itu akan diketik ke string):
Atau, lebih tepatnya, Anda cukup mengetikkan integer ke string:
sumber
Karena jawaban di sini menunjukkan dengan baik, ya, ada beberapa cara. Namun, dalam PHP Anda jarang benar-benar perlu melakukan itu. "Cara dogmatis" untuk menulis PHP adalah mengandalkan sistem pengetikan longgar bahasa, yang secara transparan akan memaksa jenis itu sesuai kebutuhan. Untuk nilai integer, ini biasanya tanpa masalah. Anda harus sangat berhati-hati dengan nilai floating point.
sumber
strlen(12345);
tetapi tidak untuk$x = 12345; echo $x[2];
Semua fungsi casting ini cukup berguna dan banyak programmer memeriksa tipe mereka lebih dan lebih.Anda cukup menggunakan yang berikut ini:
sumber
Saya akan mengatakan itu tergantung pada konteksnya. strval () atau operator casting (string) dapat digunakan. Namun, dalam kebanyakan kasus, PHP akan memutuskan apa yang baik untuk Anda jika, misalnya, Anda menggunakannya dengan gema atau printf ...
Satu catatan kecil: die () membutuhkan string dan tidak akan menampilkan int :)
sumber
Jadi gema akan mengembalikan string .
sumber
lebih cepat dari
sumber