-1

可能重复:
如何在 php 中将对象转换为字符串

我有一个包含一些对象(SimpleXML)的变量。
我可以更改此变量的类型,并将其分配给此变量本身吗?
像这样:

$test = (string)$test;
var_dump($test);

上面的代码不起作用,所以输出仍然是object(SimpleXMLElement)而不是string.

但是当我为它分配另一个变量时,$new_test = (string)$test它运行良好,并且 var_dump 输出是string]

4

5 回答 5

0

这取决于要转换的对象。对于 SimpleXML,您可能需要它的asXML方法:http ://www.php.net/manual/en/simplexmlelement.asxml.php 。对于一般对象,如果对象实现了该__toString()方法,则可以类型转换为字符串。另一种选择是var_export(...,true),但除了调试之外很少有用。

于 2012-09-14T07:38:12.543 回答
0

如果您想要字符串内容,请使用asXML方法。

var_dump($test->asXML());
于 2012-09-14T07:36:04.820 回答
0

这取决于如何SimpleXML实现魔术函数__toString()。它因班级而异。但是如果没有实现,PHP 会抛出一个致命错误。

因此,除非实现该方法,否则直接从objectto 进行类型转换string是行不通的。__toString()

于 2012-09-14T07:36:17.877 回答
0

您不能像添加声明一样将对象转换为字符串,它可能会起作用,但不会像期望的那样表现得像以前一样有一篇很棒的文章虽然之前在堆栈中写过关于如何以最佳方式做到这一点,那就是添加一个 tostring 方法在这里阅读更多...... 如何在php中将对象转换为字符串

于 2012-09-14T07:36:45.400 回答
0

将 SimpleXMLObject 类型转换为字符串

$foo = array( (string) $xml->parent->child );

<?php
  $xmlstring = "<parent><child> hello world </child></parent>";
  $xml = simplexml_load_string($xmlstring);
  $foo = array( (string) $xml->child );
  var_dump($xml).PHP_EOL;
  var_dump($foo);
?>

输出

object(SimpleXMLElement)#1 (1) {
  ["child"]=>
  string(13) " hello world "
}
array(1) {
  [0]=>
  string(13) " hello world "
}

http://codepad.org/Bss1rndd

于 2012-09-14T07:37:06.090 回答