可能是重复问题:
PHP ToString() 等效方法
我遇到了这个错误:
Catchable fatal error: Object of class stdClass could not be converted to string
我的问题是,如何在 PHP 中将对象转换为字符串?但我不想使用序列化。
顺便提一下:我使用的代码在 PHP 4 中可以工作,但在 PHP 5 中不行。
谢谢!
编辑:我自己解决了。虽然有点麻烦,但我做到了。还是谢谢大家 :-)
可能是重复问题:
PHP ToString() 等效方法
我遇到了这个错误:
Catchable fatal error: Object of class stdClass could not be converted to string
我的问题是,如何在 PHP 中将对象转换为字符串?但我不想使用序列化。
顺便提一下:我使用的代码在 PHP 4 中可以工作,但在 PHP 5 中不行。
谢谢!
编辑:我自己解决了。虽然有点麻烦,但我做到了。还是谢谢大家 :-)
为什么需要这个字符串?如果只是为了调试而需要可视化它,您可以使用 var_dump()
, print_r()
, 或者 $s = print_r($var, 1);
将其转换成字符串进行更深入的主题化。如果需要将对象作为文本发送到其他地方(数据库、Javascript代码),则可以根据您的具体情况选择序列化、json_encode、XML转换等方法。
如果既不是 var_dump,也不是 print_r,var_export,serialize,json_encode,也不是__toString,那么也许这个可以帮助你满足你的需求。
<?php
$v = (object) array('a' => 1, 'b' => 2, 'c' => 3);
$r = new ReflectionObject($v);
echo $r->getName() .' {' . implode(', ', array_map(
function($p) use ($v) {
$p->setAccessible(true);
return $p->getName() .': '. $p->getValue($v);
}, $r->getProperties())) .'}';
将输出:
stdClass {a: 1, b: 2, c: 3}
<?php
class ExampleClass {
private $pvt = 'private';
protected $prot = 'protected';
public $pub = 'public';
}
$v = new ExampleClass();
$r = new ReflectionObject($v);
echo $r->getName() ." {\n";
foreach ($r->getProperties() as $p)
if ($p->isPublic())
echo "\tpublic ".$p->getName().': '.$p->getValue($v)."\n";
else
echo "\t".($p->isPrivate()?'private ':'protected ').$p->getName().",\n";
echo "}\n";
这将会打印:
ExampleClass {
private pvt,
protected prot,
public pub: public
}
__toString
,这样你就可以打印出你想要的内容。我怀疑这不是一个对象无法转换为字符串的问题。
更像是你假设一个变量包含一个字符串(或者可以表示为字符串的东西),但它实际上包含一个对象,而你正在尝试将其输出。
不要尝试将此对象转换为字符串,这样做不起作用。只需从该对象中获取精确值。
例如,如果您得到成本输出,则此成本输出是对象。因此,请按如下方式获取该值的精确值
$var=cost->Postage_cost;
$var1=cost->other_cost;