如何将PHP变量的值转换为字符串?
我正在寻找比连接一个空字符串更好的东西:
$myText = $myVar . '';
类似于Java或。net中的ToString()方法。
如何将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;
其他回答
我认为值得一提的是,你可以通过使用输出缓冲来捕获变量中的任何输出(如print_r, var_dump):
<?php
ob_start();
var_dump($someVar);
$result = ob_get_clean();
?>
感谢: 如何将var_dump的结果捕获到字符串?
文档说你还可以这样做:
$str = "$foo";
和演员一样,但是我觉得看起来更漂亮。
来源:
俄罗斯 英语
试试这个奇怪但有效的方法,将stdClass的文本部分转换为字符串类型:
$my_std_obj_result = $SomeResponse->return->data; // Specific to object/implementation
$my_string_result = implode ((array)$my_std_obj_result); // Do conversion
对于对象,您可能无法使用强制转换操作符。相反,我使用json_encode()方法。
例如,下面将输出内容到错误日志:
error_log(json_encode($args));
正如其他人所提到的,对象需要__toString方法来强制转换为字符串。没有定义该方法的对象仍然可以使用spl_object_hash函数生成字符串表示。
该函数返回对象的唯一标识符。这个id可以用作存储对象的散列键,或者用于标识一个对象,只要该对象没有被销毁。一旦对象被销毁,它的散列可以被其他对象重用。
我有一个带有__toString方法的基Object类,默认调用md5(spl_object_hash($this))以使输出明确唯一,因为spl_object_hash的输出在对象之间看起来非常相似。
这对于调试变量初始化为Object的代码特别有帮助,稍后在代码中它被怀疑已经更改为不同的Object。简单地将变量回显到日志中就可以显示(或不显示)来自对象哈希的更改。