如何将PHP变量的值转换为字符串?

我正在寻找比连接一个空字符串更好的东西:

$myText = $myVar . '';

类似于Java或。net中的ToString()方法。


当前回答

使用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);

其他回答

双引号也可以……它应该创建一个字符串,然后它应该在两个空字符串之间APPEND/INSERT转换后的字符串值$myVar。

你正在寻找strval:

字符串strval (mixed $var) 获取一个变量的字符串值。 参见有关字符串的文档 有关转换到的更多信息 字符串。 此函数不执行格式化 返回值。如果你是 正在寻找格式化数字的方法 值作为字符串,请参见 Sprintf()或number_format()。

你可以使用强制转换操作符:

$myText = (string)$myVar;

PHP手册的字符串部分有关于字符串强制转换的更多细节,包括对布尔值和空值的特殊处理。

另一个选择是使用内置的settype函数:

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

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

与类型转换不同,这实际上是对变量执行转换,并允许您有一种转换为多种类型的通用方法。

除了Thomas G. Mayfield给出的答案之外:

如果你跟随字符串强制转换手册的链接,有一个非常重要的特殊情况需要理解:

(string)类型转换更可取,特别是如果变量$a是一个对象,因为PHP将根据其对象模型调用__toString()魔术方法来遵循类型转换协议(如果在$a实例化的类中定义了此方法)。

PHP做了类似的事情

function castToString($instance) 
{ 
    if (is_object($instance) && method_exists($instance, '__toString')) {
        return call_user_func_array(array($instance, '__toString'));
    }
}

(string)强制转换操作是PHP5+编程中推荐的技术,可以使代码更加面向对象。在我看来,这是一个与其他OOP语言(如Java/ c#等)设计相似(不同)的好例子。也就是说,以它自己特殊的PHP方式(只要是为了好的或有价值的)。