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

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

$myText = $myVar . '';

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


当前回答

__toString方法或(string)强制转换

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

可以将对象视为字符串


class Foo
{

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

}

echo new Foo(); //foo

还有另一个技巧,假设你有int变量,你想把它变成字符串


$string=''.$intvariable;

其他回答

试试这个奇怪但有效的方法,将stdClass的文本部分转换为字符串类型:

$my_std_obj_result = $SomeResponse->return->data; // Specific to object/implementation

$my_string_result = implode ((array)$my_std_obj_result); // Do conversion

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

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

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

我认为值得一提的是,你可以通过使用输出缓冲来捕获变量中的任何输出(如print_r, var_dump):

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

感谢: 如何将var_dump的结果捕获到字符串?

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