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

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

$myText = $myVar . '';

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


当前回答

当预期的字符串变量前导为0(例如077543)时,前面的回答中的一些(如果不是全部)方法会失败。

转换这样一个变量的尝试无法获得预期的字符串,因为变量被转换为以8为基数(八进制)。

所有这些将使$str的值为32611:

$no = 077543
$str = (string)$no;
$str = "$no";
$str = print_r($no,true);
$str = strval($no);
$str = settype($no, "integer");

其他回答

这是通过类型转换完成的:

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

把它放在双引号里应该可以:

$myText = "$myVar";

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

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

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

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

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

如果转换的不是简单类型(如整数或布尔值),则需要为要转换的类型编写自己的函数/方法,否则PHP将只打印该类型(如数组、GoogleSniffer或Bidet)。