如何将PHP变量的值转换为字符串?
我想寻找比用空字符串拼接更好的方法:
$myText = $myVar . '';
就像在Java或.NET中的ToString()
方法一样。
__toString()
"魔术方法" 的答案,但并没有直接提到它。用户要求一个类似于 Java 中 toString()
方法的答案,在 PHP 中,这就是 __toString()
函数。 - Ky -这可以通过类型转换来完成:
$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);
使用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);
true
参数是必不可少的!我尝试了几种字符串转换方法,包括 print_r
,但它们都让我失望了。后来我发现了 true
参数(请阅读文档以了解其工作原理)。 - ripper234您可以使用类型转换:
$var = (string)$varname;
或 StringValue:
$var = strval($varname);
或者SetType:
$success = settype($varname, 'string');
// $varname itself becomes a string
在类型转换方面,它们都为同一件事情而工作。
strval()
is what I was lookigng for because I wanted to use it with array_walk
. E.g. $array = array('cat',$object); array_walk($array,'strval'); // $array = array('cat',$object->__toString)
- Buttle Butkus您正在查找strval函数:
string strval ( mixed $var )
获取变量的字符串值。有关转换为字符串的更多信息,请参见字符串文档。
此函数不对返回的值进行任何格式化。如果您想要将数字值格式化为字符串,请参见sprintf()或number_format()。
$strings = array_map('strval', $my_numbers);
- Peter Chaulaarray_map
和字符串可调用函数的答案。 - Danon对于原始类型,只需使用(string)$var
或直接打印该变量。PHP是一种动态类型的语言,变量将在运行时转换为字符串。
如果您想将对象转换为字符串,您需要定义返回字符串的__toString()
方法。此方法禁止抛出异常。
将其放入双引号中应该可以解决:
$myText = "$myVar";
我认为值得一提的是,您可以通过使用输出缓冲来将任何输出(例如print_r
,var_dump
)捕获到变量中:
<?php
ob_start();
var_dump($someVar);
$result = ob_get_clean();
?>
$result = var_export($someVar, true)
而不是使用 ob。 - Danon另一种选择是使用内置的settype函数:
<?php
$foo = "5bar"; // string
$bar = true; // boolean
settype($foo, "integer"); // $foo is now 5 (integer)
settype($bar, "string"); // $bar is now "1" (string)
?>
这实际上对变量进行了转换,不同于类型转换,它使你能够以通用的方式转换为多种类型。
json_encode($myText)
。我发现建议的解决方案print_r
和(string)var
对于标量值和简单对象效果很好。对于复杂变量、类或对象,如果没有定义完整的__toString()
,我更喜欢前面提到的json_encode
。 - Eric Kigathi