Mengonversi bilangan bulat ke string di PHP

501

Apakah ada cara untuk mengkonversi integer ke string di PHP?

kman99
sumber
8
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";
Chris Thompson
sumber
2
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.

Sanjay Sheth
sumber
25
@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:

$foo = 5;
$foo = (string)$foo;

Cara lain adalah dengan merangkum dalam kutipan:

$foo = 5;
$foo = "$foo"
Sev
sumber
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.

Alan Storm
sumber
9

Semua jawaban ini bagus, tetapi mereka semua mengembalikan Anda string kosong jika nilainya nol.

Coba yang berikut ini:

    $v = 0;

    $s = (string)$v ? (string)$v : "0";
Mikroprosesor Cat
sumber
2
Perhatikan bahwa pertanyaan tersebut secara spesifik mengatakan 'converting integer', bukan float. :)
Microprocessor Cat
1
Tolong perbaiki kesalahannya. Bentuk yang benar adalah: $ s = (string) $ v? (string) $ v: "0";
nintyfan
7

Menggunakan:

$intValue = 1;
$string = sprintf('%d', $intValue);

Atau bisa juga:

$string = (string)$intValue;

Atau:

settype(&$intValue, 'string');
Gewel
sumber
4

Ada banyak cara konversi yang mungkin:

$input => 123
sprintf('%d',$input) => 123
(string)$input => 123
strval($input) => 123
settype($input, "string") => 123
Usersbs
sumber
4

Anda bisa menggunakan operator periode dan menggabungkan string ke dalamnya (dan itu akan diketik ke string):

$integer = 93;
$stringedInt = $integer . "";

Atau, lebih tepatnya, Anda cukup mengetikkan integer ke string:

$integer = 93;
$stringedInt = (string) $integer;
Andrew Dunkman
sumber
0

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.

troelskn
sumber
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.
Elzo Valugi
0

Anda cukup menggunakan yang berikut ini:

$intVal = 5;
$strVal = trim($intVal);
Imam
sumber
0

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 :)

merkuro
sumber
"dalam kebanyakan kasus, PHP akan memutuskan apa yang baik untuk Anda" luar biasa
:,
0
$amount = 2351.25;
$str_amount = "2351.25";

$strCorrectAmount = "$amount";
echo gettype($strCorrectAmount);    //string

Jadi gema akan mengembalikan string .

Kaushik shrimali
sumber
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
Kaushik shrimali
-4
$integer = 93;
$stringedInt = $integer.'';

lebih cepat dari

$integer = 93;
$stringedInt = $integer."";
Arthur Kushman
sumber
$ foo = 5; $ foo = "$ foo" sangat hemat untuk memori dalam penggunaan PHP ''.
Arthur Kushman