可捕获的致命错误:对象无法转换为字符串,但var_dump表示它是一个字符串


Catchable fatal error: Object could not be converted to string - but var_dump says it IS a string

这里有很多人已经问过我一个问题:当试图回显字符串时,"可捕获的致命错误:类Struct的对象无法在第30行的D:''Programy''XAMP''htdocs''e-history''test.php中转换为字符串"。对于大多数相关问题,建议尝试var_dump()函数。然而,我试过了,一切似乎都很好,除了它抛出了错误。

我的代码(测试版本):

$place = Struct::factory('gid','lat','lon','radius');
$places = loadPlaces('', 50, 14);
$j = 0;
var_dump($places[$j]->gid);
echo "$places[$j]->gid";

var_dump和echo的输出如下:

string(1) "6"
Catchable fatal error: Object of class Struct could not be converted to string in D:'Programy'XAMP'htdocs'e-history'test.php on line 30

通常$object->value表示法没有问题,我不知道为什么它在这种情况下不起作用。我遇到了一些数组/对象不匹配的问题,但我几乎可以肯定不是这种情况。知道怎么解决吗?

编辑:我的代码中的第30行是:echo "$places[$j]->gid";

这两行之间有区别:

echo "$places[$j]->gid";
echo $places[$j]->gid;

第一个错误地尝试访问字符串变量中的对象。第二个像var_dump一样访问它。没有必要将变量包装在双引号内!

第一个版本应该是这样的:

echo "{$places[$j]->gid}";