560

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

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

$myText = $myVar . '';

ToString()Javaや.NETのメソッドのように。

4

25 に答える 25

791

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

$myText = (string)$myVar;

ブール値とnullの特別な処理など、文字列のキャストと変換の詳細については、PHPマニュアルの「文字列」セクションを参照してください。

于 2008-08-26T14:01:50.047 に答える
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);
于 2008-08-26T14:11:01.197 に答える
127

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);
于 2010-08-24T17:31:52.433 に答える
58

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

$var = (string)$varname;

または文字列値:

$var = strval($varname);

またはセットタイプ:

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

Type-Juggling に関しては、それらはすべて同じ目的で機能します。

于 2010-01-02T08:51:14.100 に答える
33

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

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

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

于 2008-08-26T14:00:48.460 に答える
28

strvalを探しています:

string strval ( mixed $var )

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

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

于 2009-12-20T15:24:10.867 に答える
18

プリミティブの場合は(string)$var、この変数をすぐに使用または印刷してください。PHPは動的型付け言語であり、変数はその場で文字列にキャストされます。

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

于 2008-08-26T14:15:46.787 に答える
15

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

$myText = "$myVar";
于 2008-08-26T13:58:02.087 に答える
8

トーマス・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 言語との設計の類似性 (相違点) の良い例です。

于 2012-05-06T18:28:41.120 に答える
8

もう 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)
?>

これは、型キャストとは異なり、変数に対して実際に変換を実行し、複数の型に変換する一般的な方法を使用できるようにします。

于 2011-03-07T12:38:59.323 に答える
6

077543のように、意図した文字列変数の先頭にゼロがある場合、前の回答のメソッドのすべてではないにしても、一部が失敗します。

このような変数を変換しようとすると、目的の文字列を取得できません。これは、変数が8 進数 (8 進数)に変換されるためです。

これらはすべて$str、値が32611になります。

$no = 077543
$str = (string)$no;
$str = "$no";
$str = print_r($no,true);
$str = strval($no);
$str = settype($no, "integer");
于 2014-05-19T08:09:54.017 に答える
3

ドキュメントには、次のこともできると書かれています。

$str = "$foo";

キャストと同じですが、綺麗に見えると思います。

ソース:

于 2013-11-15T22:45:49.017 に答える
1

整数やブール値などの単純な型以外のものを変換する場合は、変換しようとしている型に対して独自の関数/メソッドを作成する必要があります。そうしないと、PHPは型(配列、GoogleSnifferなど)を出力するだけです。 、またはBidet)。

于 2008-08-26T14:03:35.270 に答える
1

PHPは動的に型付けされるため、Chris Fournierが言ったように、「文字列のように使用すると、文字列になります」。文字列のフォーマットをより細かく制御したい場合は、printfが答えです。

于 2008-08-26T14:04:33.457 に答える
1

.ToString($ in)という名前のメソッドをいつでも作成できます。

$in . '';  
于 2008-08-26T13:59:23.470 に答える
1

var_export PHP 関数を使用することもできます。

于 2015-08-11T13:06:13.140 に答える
1

二重引用符も機能するはずです...文字列を作成し、2 つの空の文字列の間に $myVar のキャストされた STRING 値を APPEND/INSERT する必要があります。

于 2011-07-31T18:25:25.817 に答える
1
$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) . "'";
于 2016-06-09T12:04:02.307 に答える
0

オブジェクトの場合、キャスト演算子を使用できない場合があります。代わりに、json_encode()メソッドを使用します。

たとえば、次のようにすると、内容がエラー ログに出力されます。

error_log(json_encode($args));
于 2013-04-03T17:44:36.993 に答える
0

__toString メソッドまたは (文字列) キャスト

$string=(string)$variable;  //force make string 

オブジェクトを文字列として扱うことができます


class Foo
{

  public function __toString()
  {
     return "foo";
  }

}

echo new Foo(); //foo

また、別のトリックがあります。int変数があると仮定して、文字列を作成したい


$string=''.$intvariable;
于 2020-10-12T17:53:28.987 に答える