在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_r
, var_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)."'";