PHPで整数を文字列に変換する


501

PHPで整数を文字列に変換する方法はありますか?


8
PHPは緩やかに型付けされています。かつて整数だったものが文字列になることもあります。たとえば、文字列の場合はecho(いわゆる文字列コンテキストで使用されます)。
hakre

2
@hakreはいphpは緩く型付けされており、エコーすると値が文字列コンテキストで出力されます。ただし、これによって変数のデータ型が内部的に変更されることはありません。したがって、strval($ variable)が正しいです。
vivek_23 2015

@Vivek:内部的にもstrval()変更しません $variable
2015

2
つまり、$ variable = strval($ variable);
vivek_23、2015

回答:


781

このstrval()関数を使用して、数値を文字列に変換できます。

保守の観点からは、他の難解な答えのいくつかではなく、何をしようとしているのかが明らかです。もちろん、それはあなたのコンテキストに依存します。

$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
いい視点ね。そこにいくつかのmysql_escape_string関数を入れてクリーンアップしました。
クリストンプソン

6
mysql_escape_stringはcharsetを無視するため、廃止されたため、編集されました。
Kzqai、2009

7
@Kzqaiインジェクション攻撃を回避するためにこの例を見る人にとっては、文字列をエスケープして、準備されたステートメントを使用する試みを放棄すると思います
chacham15

22
5年後、質問に答える必要がなくなり、混乱を招いたため、SQLの例をようやく削除しました。
Chris Thompson

3
警告!!特定の数値を渡すと、phpは文字列に変換するときにそれらを四捨五入しstrval(0.999999997)ます1
danielson317 2018年

86

これを行うには多くの方法があります。

2つの例:

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

詳細については、タイプジャグリングに関するPHPマニュアルを参照してください。


25
@Jazzerus $ varが0(ゼロ)の場合、空の文字列になります。問題がある。
Simon Forsberg、2012

5
への変換0""悪くないかもしれません。それは本当にアプリケーションに依存します。そうは言っても、あなたは良いことを言っています。
WNRosenberg 2012

2
$ f = 0; echo "$ f"; 私とうまく機能し、ゼロはまだゼ​​ロのままです。だから私は "$ var"を賢くて便利な答えと考えています。9999999ループ(文字列)の実行には0.4046459 ...秒かかりますが、 "$ var"には0.3725229 ...違いはありません。
Melsi

45
$foo = 5;

$foo = $foo . "";

$fooは文字列です。

ただし、キャストに慣れることをお勧めします。キャストはそのようなことを達成するための適切な方法なので、

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

別の方法は引用符でカプセル化することです:

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

信じられないほど奇妙なことに、私たちは両方とも5を選びました。また、+はjavaです。
karim79 2009年

そこにある言語間で連結構文を混同していると思います。
ジェイソン

6
あなたの意図が非常に明確になるという理由だけで、キャスティングに傾倒したいと思います。キャストには、タイプを変更するという1つの目的しかありません。他の例は、状況によってはほとんど間違いのように見えるかもしれません。
フランクファーマー

私のために働いた.. thnxたくさん
zeetit '06年

10

PHPで整数を文字列に「変換」する方法はいくつかあります。

従来のコンピュータサイエンスの方法は、変数を文字列としてキャストすることです。

$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の暗黙の型変換と文字列補間を利用することもできます。

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

最後に、上記と同様に、文字列を受け入れて返す関数は、整数の変換に使用できます。以下を検討してください。

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

私は最後のオプションはお勧めしませんが、この動作に依存するコードを実際に見かけたので、そのまま渡すと思いました。


9

これらの答えはすべてすばらしいですが、値がゼロの場合はすべて空の文字列を返します。

以下を試してください:

    $v = 0;

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

2
質問では、浮動小数点数ではなく、「整数の変換」について具体的に述べていることに注意してください。:)
マイクロプロセッサCat

1
間違いを訂正してください。正しい形式は次のとおりです:$ s =(string)$ v?(文字列)$ v: "0";
nintyfan 2018

7

使用する:

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

またはそれは可能性があります:

$string = (string)$intValue;

または:

settype(&$intValue, 'string');

4

多くの可能な変換方法があります:

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

4

ピリオド演算子を使用して文字列を連結できます(文字列に型キャストされます)。

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

または、より正確には、整数を文字列に型キャストするだけです。

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

0

ここでの答えがうまく示すように、はい、いくつかの方法があります。ただし、PHPでは実際にそうする必要はほとんどありません。PHPを記述する「独断的な方法」は、必要に応じて型を透過的に強制する言語のルーズタイプシステムに依存することです。整数値の場合、これは通常問題ありません。ただし、浮動小数点値には十分注意する必要があります。


PHPが常に整数を強制的に文字列に変換するとは思いません。それはのためにそれを行うだろうstrlen(12345);が、ないために$x = 12345; echo $x[2];これらのすべてのキャスト関数は非常に有用であり、プログラマーの多くは、より多くの彼らの種類をチェックしています。
Elzo Valugi、2016


0

それは状況次第だと思います。strval()またはキャスト演算子(string)を使用できます。ただし、ほとんどの場合、たとえば、echoまたはprintfで使用すると、PHPが適切なものを決定します。

小さな注意:die()は文字列を必要とし、intを表示しません:)


「ほとんどの場合、PHPがあなたに最適なものを決定します」驚くべき:、)
itsjavi

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

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

したがって、エコーは戻り文字列になります


文字列」について:文字通り、またはタイプ?または、他の何か?(回答を編集して)より明確にできますか?
Peter Mortensen

コメントをありがとう@ Peter Mortensenつまり、戻り値の型「STRING」は、値が新しい変数の文字列として変換されることを意味します。そのため、文字列を編集しました
Kaushik shrimali

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.