在PHP中相当于ToString()

如何将PHPvariables的值转换为string?

我正在寻找一些比用空string连接更好的东西:

$myText = $myVar . ''; 

像Java或.NET中的ToString()方法一样。

您可以使用铸造操作员 :

 $myText = (string)$myVar; 

在PHP手册的“ string”部分有更多关于string转换和转换的细节,包括布尔值和空值的特殊处理。

这是通过types转换完成的:

 $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" 

一些更多types的投射例子:

 $i = 1; // int 1 var_dump((int) $i); // bool true var_dump((bool) $i); // string "1" var_dump((string) 1); 

使用:

 $myText = print_r($myVar,true); 

你也可以用like

 $myText = print_r($myVar,true)."foo bar"; 

要获得更多信息(包括variables的types,…),请使用var_export:

 $myText = var_export($myVar,true); 

这将设置myText为一个string,如:

 array ( 0 => '11', ) 

你可以使用types转换:

 $var = (string)$varname; 

或StringValue:

 $var = strval($varname); 

或SetType:

 $success = settype($varname, 'string'); // $varname itself becomes a string 

他们都在types杂耍的工作相同的事情。

如何将PHPvariables的值转换为string?

可以使用(string)cast或strval()函数将值转换为string。 (编辑:正如托马斯也说)。

当你将它作为一个string使用的时候,它也应该被自动地铸造出来。

你正在寻找strval :

string strval ( mixed $var )

获取variables的string值。 有关转换为string的更多信息,请参阅string文档。

此函数不对返回的值进行格式化。 如果您正在寻找将数值格式化为string的方式,请参阅sprintf()或number_format()。

对于原语只需使用(string)$var或直接打印这个variables。 PHP是dynamictypes化的语言,variables将被dynamic地转换为string。

如果要将对象转换为string,则需要定义返回string的__toString()方法。 禁止这种方法抛出exception。

把它放在双引号应该工作:

 $myText = "$myVar"; 

我认为值得一提的是,你可以使用输出缓冲来捕获variables中的任何输出(如print_rvar_dump ):

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

感谢: https : //stackoverflow.com/a/139491/987864

除了Thomas G. Mayfield给出的答案之外,

如果您按照string铸造手册的链接,有一个特殊情况是非常重要的理解:

(string)强制types转换是特别优选的,特别是如果你的variables$ a是一个对象,因为PHP将根据其对象模型通过调用__toString()魔术方法来遵循转换协议 (如果在$ a被实例化)。

PHP做类似于

 function castToString($instance) { if (is_object($instance) && method_exists($instance, '__toString')) { return call_user_func_array(array($instance, '__toString')); } } 

对于PHP5 +编程, (string)投射操作是推荐的技术,使得代码更加面向对象。 海事组织这是一个很好的例子与其他OOP语言,如Java / C#/等devise相似(差异),即在它自己的特殊的PHP方式(无论何时是为了善或价值)。

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

 <?php $foo = "5bar"; // string $bar = true; // boolean settype($foo, "integer"); // $foo is now 5 (integer) settype($bar, "string"); // $bar is now "1" (string) ?> 

这实际上对variables执行转换,不像types转换,并允许您有一个转换为多种types的一般方法。

当预期的stringvariables具有前导零(即,077543)时,一些(如果不是全部)上述方法失败,则尝试转换这样的variables无法获得预期的string,因为variables被转换为基8(八进制)

所有这些都会使$ str的值为32611
$ no = 077543
$ str =(string)$ no;
$ str =“$ no”;
$ str = print_r($ no,true);
$ str = strval($ no);
$ str = settype($ no,“integer”);

该文件说,你也可以这样做:

 $str = "$foo"; 

和演员一样,但我觉得看起来更漂亮。

资源:

  • 俄语
  • 英语

正如其他人所提到的,对象需要将__toString方法转换为string。 没有定义该方法的对象仍然可以使用spl_object_hash函数生成一个string表示forms。

该函数返回该对象的唯一标识符。 只要对象没有被销毁,这个id就可以被用作存储对象或者标识一个对象的哈希键。 一旦对象被销毁,它的哈希可能会被其他对象重用。

我有一个基类Object类,它有一个默认调用md5(spl_object_hash($this))__toString方法,使得输出显然是唯一的,因为spl_object_hash的输出在对象之间看起来非常相似。

这对于debugging代码来说非常有用,在这个代码中,一个variables初始化为一个对象,后来在代码中它被怀疑已经变成了一个不同的对象。 简单地将variables回显到日志可以揭示对象哈希(或不)的变化。

双引号也应该工作…它应该创build一个string,然后它应该APPEND /插入$ myVar的铸造STRING值在2个空string之间。

你也可以使用var_export php函数。

你总是可以创build一个名为.ToString($ in)的方法返回

 $in . ''; 

如果要转换除整型或布尔值之类的简单types之外的任何其他types,则需要为要转换的types编写自己的函数/方法,否则PHP将只打印该types(如array,GoogleSniffer ,或坐浴盆)。

PHP是dynamictypes的,就像Chris Fournier所说:“如果像string一样使用它,它就会变成一个string”。 如果你正在寻找对string格式的更多控制,那么printf就是你的答案。

对于对象,您可能无法使用投射操作符。 相反,我使用json_encode()方法。

例如,以下内容将输出到错误日志中:

 error_log(json_encode($args)); 

试试这个有点奇怪,但工作方式将stdClass的文本部分转换为stringtypes:

 $my_std_obj_result = $SomeResponse->return->data; //specific to object/implementation $my_string_result = implode ((array)$my_std_obj_result); //do conversion 

我使用variableToString

https://github.com/lingtalfi/VariableToString

它处理每一个PHPtypes,并且是灵活的(你可以扩展它,如果你想)

 $parent_category_name = "new clothes & shoes" ; //TO make it to string option one $parent_category = strval($parent_category_name); //Or make it string my concatenating it with 'new clothes & shoes' //useful for database queries $parent_category = "'".strval($parent_category_name)."'";