PHP変数の値を文字列に変換するにはどうすればよいですか?
空の文字列と連結するよりも優れたものを探していました。
$myText = $myVar . '';
ToString()
Javaや.NETのメソッドのように。
キャスト演算子を使用できます:
$myText = (string)$myVar;
ブール値とnullの特別な処理など、文字列のキャストと変換の詳細については、PHPマニュアルの「文字列」セクションを参照してください。
これは型キャストで行われます:
$strvar = (string) $var; // Casts to string
echo $var; // Will cast to string implicitly
var_dump($var); // Will show the true type of the variable
クラスでは、魔法のメソッドを使用して出力内容を定義できます__toString
。例を以下に示します。
class Bottles {
public function __toString()
{
return 'Ninety nine green bottles';
}
}
$ex = new Bottles;
var_dump($ex, (string) $ex);
// Returns: instance of Bottles and "Ninety nine green bottles"
その他の型キャストの例:
$i = 1;
// int 1
var_dump((int) $i);
// bool true
var_dump((bool) $i);
// string "1"
var_dump((string) 1);
print_rを使用します。
$myText = print_r($myVar,true);
次のように使用することもできます。
$myText = print_r($myVar,true)."foo bar";
これは$myText
、次のような文字列に設定されます。
array (
0 => '11',
)foo bar
var_exportを使用して、もう少し情報を取得します (変数の種類など):
$myText = var_export($myVar,true);
型キャストを使用できます。
$var = (string)$varname;
または文字列値:
$var = strval($varname);
またはセットタイプ:
$success = settype($varname, 'string');
// $varname itself becomes a string
Type-Juggling に関しては、それらはすべて同じ目的で機能します。
strvalを探しています:
string strval ( mixed $var )
変数の文字列値を取得します。文字列への変換の詳細については、文字列に関するドキュメントを参照してください。
この関数は、戻り値に対してフォーマットを実行しません。数値を文字列としてフォーマットする方法を探している場合は、sprintf() または number_format() を参照してください。
プリミティブの場合は(string)$var
、この変数をすぐに使用または印刷してください。PHPは動的型付け言語であり、変数はその場で文字列にキャストされます。
__toString()
オブジェクトを文字列に変換する場合は、文字列を返すメソッドを定義する必要があります。このメソッドは例外をスローすることを禁じられています。
二重引用符で囲むと機能するはずです。
$myText = "$myVar";
トーマス・G・メイフィールドの回答に加えて:
文字列キャストマニュアルへのリンクをたどると、理解することが非常に重要な特別なケースがあります。
(文字列) キャストは、特に変数$aがオブジェクトの場合に適しています。これは、PHP が__toString()マジック メソッドを呼び出してオブジェクト モデルに従ってキャストプロトコルに従うためです ( $a がインスタンス化されたクラスで定義されている場合)。 )。
PHPは次のようなことを行います
function castToString($instance)
{
if (is_object($instance) && method_exists($instance, '__toString')) {
return call_user_func_array(array($instance, '__toString'));
}
}
(文字列)キャスト操作は、コードをよりオブジェクト指向にする PHP5+ プログラミングに推奨される手法です。IMO これは、Java/C# などのような他の OOP 言語との設計の類似性 (相違点) の良い例です。
もう 1 つのオプションは、組み込みのsettype関数を使用することです。
<?php
$foo = "5bar"; // string
$bar = true; // boolean
settype($foo, "integer"); // $foo is now 5 (integer)
settype($bar, "string"); // $bar is now "1" (string)
?>
これは、型キャストとは異なり、変数に対して実際に変換を実行し、複数の型に変換する一般的な方法を使用できるようにします。
077543のように、意図した文字列変数の先頭にゼロがある場合、前の回答のメソッドのすべてではないにしても、一部が失敗します。
このような変数を変換しようとすると、目的の文字列を取得できません。これは、変数が8 進数 (8 進数)に変換されるためです。
これらはすべて$str
、値が32611になります。
$no = 077543
$str = (string)$no;
$str = "$no";
$str = print_r($no,true);
$str = strval($no);
$str = settype($no, "integer");
整数やブール値などの単純な型以外のものを変換する場合は、変換しようとしている型に対して独自の関数/メソッドを作成する必要があります。そうしないと、PHPは型(配列、GoogleSnifferなど)を出力するだけです。 、またはBidet)。
PHPは動的に型付けされるため、Chris Fournierが言ったように、「文字列のように使用すると、文字列になります」。文字列のフォーマットをより細かく制御したい場合は、printfが答えです。
.ToString($ in)という名前のメソッドをいつでも作成できます。
$in . '';
var_export PHP 関数を使用することもできます。
二重引用符も機能するはずです...文字列を作成し、2 つの空の文字列の間に $myVar のキャストされた STRING 値を APPEND/INSERT する必要があります。
$parent_category_name = "new clothes & shoes";
// To make it to string option one
$parent_category = strval($parent_category_name);
// Or make it a string by concatenating it with 'new clothes & shoes'
// It is useful for database queries
$parent_category = "'" . strval($parent_category_name) . "'";
オブジェクトの場合、キャスト演算子を使用できない場合があります。代わりに、json_encode()
メソッドを使用します。
たとえば、次のようにすると、内容がエラー ログに出力されます。
error_log(json_encode($args));
__toString メソッドまたは (文字列) キャスト
$string=(string)$variable; //force make string
オブジェクトを文字列として扱うことができます
class Foo
{
public function __toString()
{
return "foo";
}
}
echo new Foo(); //foo
また、別のトリックがあります。int変数があると仮定して、文字列を作成したい
$string=''.$intvariable;