如何将PHP变量的值转换为字符串?
我正在寻找比连接一个空字符串更好的东西:
$myText = $myVar . '';
类似于Java或。net中的ToString()方法。
如何将PHP变量的值转换为字符串?
我正在寻找比连接一个空字符串更好的东西:
$myText = $myVar . '';
类似于Java或。net中的ToString()方法。
当前回答
我使用variableToString。它可以处理所有PHP类型,并且非常灵活(如果需要,可以扩展它)。
其他回答
我如何转换一个PHP的值 变量转换为字符串?
可以使用(string)强制转换或strval()函数将值转换为字符串。(编辑:托马斯也说过)。
当您将它作为字符串使用时,它也应该自动为您强制转换。
除了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方式(只要是为了好的或有价值的)。
PHP是动态类型的,所以就像Chris Fournier说的,“如果你像字符串一样使用它,它就变成了字符串”。如果您正在寻找对字符串格式的更多控制,那么printf就是您的答案。
使用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);
正如其他人所提到的,对象需要__toString方法来强制转换为字符串。没有定义该方法的对象仍然可以使用spl_object_hash函数生成字符串表示。
该函数返回对象的唯一标识符。这个id可以用作存储对象的散列键,或者用于标识一个对象,只要该对象没有被销毁。一旦对象被销毁,它的散列可以被其他对象重用。
我有一个带有__toString方法的基Object类,默认调用md5(spl_object_hash($this))以使输出明确唯一,因为spl_object_hash的输出在对象之间看起来非常相似。
这对于调试变量初始化为Object的代码特别有帮助,稍后在代码中它被怀疑已经更改为不同的Object。简单地将变量回显到日志中就可以显示(或不显示)来自对象哈希的更改。