.NET / JavaのtoString()に相当するPHP

2008年08月26日に質問されました。  ·  閲覧回数 1.5M回  ·  ソース

Antoine Aubry picture
2008年08月26日

PHP変数の値を文字列に変換するにはどうすればよいですか?

空の文字列と連結するよりも優れたものを探していました。

$myText = $myVar . '';

Javaまたは.NETのToString()メソッドのように。

回答

Tom Mayfield picture
2008年08月26日
792

キャスト演算子を使用できます:

$myText = (string)$myVar;

ブール値とnullの特別な処理など、PHPマニュアルの「文字列」セクションに文字列のキャストと変換の詳細があります。

Ross picture
2008年08月26日
310

これは型キャストで行われます:

$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);
Cedric picture
2010年08月25日
126

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);
Joel Larson picture
2010年01月02日
58

型キャストを使用できます。

$var = (string)$varname;

またはStringValue:

$var = strval($varname);

またはSetType:

$success = settype($varname, 'string');
// $varname itself becomes a string

それらはすべて、型ジャグリングに関して同じことで機能します。

Chris picture
2008年08月26日
33

PHP変数の値を文字列に変換するにはどうすればよいですか?

値は、 (string)キャストまたはstrval()関数を使用して文字列に変換できます。 (編集:トーマスも述べたように)。

また、文字列として使用すると、自動的にキャストされます。

opensas picture
2009年12月20日
28

あなたはstrvalを探してい

string strval ( mixed $var )

変数の文字列値を取得します。 文字列への変換の詳細については、文字列に関するドキュメントを参照してください。

この関数は、戻り値のフォーマットを実行しません。 数値を文字列としてフォーマットする方法をお探しの場合は、sprintf()またはnumber_format()を参照してください。

Michał Rudnicki picture
2008年08月26日
18

プリミティブの場合は、 (string)$varか、この変数をすぐに出力します。 PHPは動的に型指定された言語であり、変数はその場で文字列にキャストされます。

オブジェクトを文字列に変換する場合は、文字列を返す__toString()メソッドを定義する必要があります。 このメソッドは、例外をスローすることを禁じられています。

Mark Biek picture
2008年08月26日
15

二重引用符で囲むと機能するはずです。

$myText = "$myVar";
Daan picture
2014年02月26日
11

出力バッファリングを使用すると、変数内の任意の出力( print_rvar_dump )をキャッチできることに言及する価値があると思います。

<?php
    ob_start();
    var_dump($someVar);
    $result = ob_get_clean();
?>

おかげで: var_dumpの結果を文字列にキャプチャするにはどうすればよいですか?

Justin Weeks picture
2011年03月07日
8

別のオプションは、組み込みのsettype関数を使用することです。

<?php
$foo = "5bar"; // string
$bar = true;   // boolean

settype($foo, "integer"); // $foo is now 5   (integer)
settype($bar, "string");  // $bar is now "1" (string)
?>

これにより、型キャストとは異なり、実際に変数に対して変換が実行され、複数の型に変換する一般的な方法が可能になります。