PHP'de bir tamsayıyı dizeye dönüştürme


501

PHP'de bir tamsayıyı dizeye dönüştürmenin bir yolu var mı?


8
PHP gevşek yazılmıştır. Bir kez tamsayı olan şey bir dize de olabilir, örneğin siz echo( dize bağlamında kullanıldığında ).
hakre

2
@hakre yes php gevşek yazılmıştır ve echoing değeri string bağlamında basar. Ancak bu, bir değişkenin veri tipini dahili olarak değiştirmez. Bu nedenle, strval ($ değişken) doğrudur.
vivek_23

@Vivek: içsel olarak strval()da değiştirmez $variable.
hakre

2
$ Değişken = strval ($ değişken);
vivek_23

Yanıtlar:


781

strval()Bir sayıyı dizeye dönüştürmek için işlevi kullanabilirsiniz .

Bir bakım perspektifinden bakıldığında, diğer daha ezoterik cevaplardan ziyade ne yapmaya çalıştığınız açıktır. Tabii ki, durumunuza bağlıdır.

$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";

2
İyi bir nokta. Onu temizlemek için bazı mysql_escape_string işlevlerinde attı.
Chris Thompson

6
mysql_escape_string karakter kümesini yok saydığı için kullanımdan kaldırıldığı için düzenlendi.
Kzqai

7
@Kzqai enjeksiyon saldırılarını denemek ve önlemek için bu örneğe bakan herkes için, dize kaçmak ve hazırlanan ifadeleri kullanmak için girişimlerinizi terk söyleyebilirim
chacham15

22
5 yıl sonra nihayet soruyu cevaplamak ve karışıklık getirmek için gereksiz olduğu için SQL örneğini kaldırdım.
Chris Thompson

3
Uyarı!! Eğer belirli sayılarda geçerseniz php string: strval(0.999999997)dönüşlerinde onları yuvarlar 1.
danielson317

86

Bunu yapmanın birçok yolu var.

İki örnek:

 $str = (string) $int;
 $str = "$int";     

Daha fazla bilgi için Türler Dönüşümü hakkında PHP Kılavuzuna bakın .


25
@Jazzerus $ var 0'a (sıfır) eşitse, bu boş bir dize olur. Sorunlu.
Simon Forsberg

5
Dönüştürme 0için ""kötü olmaz kudretini; gerçekten uygulamaya bağlıdır. İyi bir noktaya değindin.
WNRosenberg

2
$ f = 0; echo "$ f"; benimle iyi çalışıyor, sıfır hala sıfır. Bu yüzden "$ var" ı akıllı / kullanışlı bir cevap olarak görüyorum. Çarpıcı 9999999 döngüler (dize) 0.4046459 ... sn alırken, "$ var" 0.3725229 alır ... fark yok.
Mart'ta Melsi

45
$foo = 5;

$foo = $foo . "";

Şimdi $foobir dize.

Ancak, döküm yapmaya alışmak isteyebilirsiniz. Döküm, bu tür bir şeyi başarmanın doğru yolu olduğundan:

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

Başka bir yol tırnak içine almaktır:

$foo = 5;
$foo = "$foo"

O kadar inanılmaz garip ki ikimiz de 5'i seçtik. Ayrıca, + java.
karim79

Sanırım buradaki diller arasındaki birleştirme sözdizimini karıştırıyorsun.
jason

6
Sadece niyetine bolca açık olduğu için döküm yapmaya eğilimliydim. Dökümün tek bir amacı vardır: türleri değiştirmek. Diğer örnekler neredeyse bazı bağlamlarda hatalara benzeyebilir.
Frank Farmer

Benim için çalıştı .. thnx çok
zeetit

10

Bir tamsayıyı PHP'de bir dizeye "dönüştürmenin" birkaç yolu vardır.

Geleneksel bilgisayar bilimi yolu, değişkeni bir dize olarak kullanmak olacaktır:

$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";

PHP'nin örtük tür dönüşümü ve dize enterpolasyonundan da yararlanabilirsiniz:

$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";

Son olarak, yukarıdakine benzer şekilde, bir dizeyi kabul eden ve döndüren herhangi bir işlev dönüştürmek ve tamsayı için kullanılabilir. Aşağıdakileri göz önünde bulundur:

$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";

Ben son seçeneği tavsiye etmem, ama vahşi bu davranışa dayanıyordu kod gördüm, bu yüzden birlikte geçireceğini düşündüm.


9

Tüm bu cevaplar harika, ancak değer sıfırsa hepsi size boş bir dize döndürür.

Takip etmeyi dene:

    $v = 0;

    $s = (string)$v ? (string)$v : "0";

2
Sorunun özellikle bir kayan nokta değil, 'bir tamsayıyı dönüştürme' dediğini unutmayın. :)
Mikroişlemci Kedi

1
Hatayı düzeltin lütfen. Doğru form şu şekilde olmalıdır: $ s = (dize) $ v? (dize) $ v: "0";
nintyfan

7

kullanın:

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

Veya şunlar olabilir:

$string = (string)$intValue;

Veya:

settype(&$intValue, 'string');

4

Birçok olası dönüşüm yolu vardır:

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

4

Nokta operatörünü kullanabilir ve bir dizeyi ona dizeleyebilirsiniz (ve bir dizeye dökülür):

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

Ya da, daha doğru bir şekilde, tamsayıyı bir dizeye cast yazabilirsiniz:

$integer = 93;
$stringedInt = (string) $integer;

0

Buradaki cevapların güzel gösterdiği gibi, evet, birkaç yol var. Bununla birlikte, PHP'de nadiren bunu yapmanız gerekir. PHP'yi yazmanın "dogmatik yolu", dilin türü gerektiği gibi zorlayan şeffaf yazım sistemine güvenmektir. Tam sayı değerleri için, bu genellikle sorunsuzdur. Yine de kayan nokta değerlerine çok dikkat etmelisiniz.


PHP her zaman dize için bir tam sayı zorlar sanmıyorum. Bu için yapacağım strlen(12345);ama için $x = 12345; echo $x[2];All bu döküm fonksiyonları oldukça yararlıdır ve programcılar çok daha onların türlerini kontrol ediyoruz.
Elzo Valugi

0

Sadece aşağıdakileri kullanabilirsiniz:

$intVal = 5;
$strVal = trim($intVal);

0

Bağlama bağlı olduğunu söyleyebilirim. strval () veya döküm operatörü (dize) kullanılabilir. Ancak, çoğu durumda PHP, örneğin yankı veya printf ile kullanırsanız sizin için neyin iyi olduğuna karar verecektir ...

Küçük bir not: die () bir dizeye ihtiyaç duyar ve herhangi bir int göstermez :)


"çoğu durumda PHP sizin için neyin iyi olduğuna karar verecek" şaşırtıcı:,)
itsjavi

0
$amount = 2351.25;
$str_amount = "2351.25";

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

Yani yankı dönüş dizesi olacak .


Re " string ": tam anlamıyla veya türü? Veya başka bir şey? Daha net yapabilir misiniz ( cevabınızı düzenleyerek )?
Peter Mortensen

Yorum için teşekkürler @ Peter Mortensen Geri dönüş türü "STRING", değerinizin yeni bir değişkende dize olarak dönüştürülmesi gerektiği anlamına gelir. işte bu yüzden string düzenledim
Kaushik shrimali

-4
$integer = 93;
$stringedInt = $integer.'';

daha hızlı

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

$ foo = 5; $ foo = "$ foo" PHP kullanımında bellek için son derece uygun ''.
Arthur Kushman
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.