如何在php中将对象转换为字符串

如何在php中将对象转换为字符串,php,Php,可能重复: 如何在php中将对象转换为字符串 实际上,我正在处理web服务API。我想使用一个API的输出作为另一个API的输入。当我尝试这样做时,我得到了如下错误:可捕获致命错误:std类的对象无法转换为C:\ 这是第一个API::stdClass对象([document_number]=>10ba60)的输出,现在我只想将该数字用作第二个AP的输入 print_r和_string()在我的情况下都不起作用您有print_r函数有一个模块,使用该函数可以序列化任何对象。使用强制转换操作符(s

可能重复:

如何在php中将对象转换为字符串


实际上,我正在处理web服务API。我想使用一个API的输出作为另一个API的输入。当我尝试这样做时,我得到了如下错误:可捕获致命错误:std类的对象无法转换为C:\


这是第一个API::stdClass对象([document_number]=>10ba60)的输出,现在我只想将该数字用作第二个AP的输入


print_r和_string()在我的情况下都不起作用

您有print_r函数

有一个模块,使用该函数可以序列化任何对象。

使用强制转换操作符
(string)$yourObject

您可以通过在类中实现
\uuu toString()
方法来定制对象如何表示为字符串,这样,当您的对象是(显式类型cast
$str=(string)$myObject;
或自动
echo$myObject
)时,您可以控制包含的内容和字符串格式

如果您只想显示对象的数据,则上述方法将起作用。如果要将对象存储在会话或数据库中,则需要将其保存,以便PHP知道如何重建实例

下面是一些代码来演示差异:

class MyObject {

  protected $name = 'JJ';

  public function __toString() {
    return "My name is: {$this->name}\n";
  }

}

$obj = new MyObject;

echo $obj;
echo serialize($obj);
输出:

我的名字是:JJ

O:8:“我的对象”:1:{s:7:*名称;s:2:“JJ”}


在您的情况下,您只需使用

$firstapiOutput->document_number

作为第二个api的输入。

您的意思是像在C中一样将其转换为字符串吗?或者查看它包含的数据的直观表示?实际上,我正在处理web服务API。我想使用一个API的输出作为另一个API的输入。当我尝试这样做时,我得到了如下错误:可捕获致命错误:类std的对象无法转换为C:\…中的字符串……我想您必须给我们提供更多详细信息。错误显示另一个API使用来自第一个API的返回作为字符串。我认为这完全取决于第一个API返回的信息和第二个API需要的信息。这是第一个API::stdClass对象([document_number]=>10ba60)的输出,现在我只希望该数字用作第二个API打印和_string()的输入这两种方法在我的情况下都不起作用,但如果对象具有复杂的数据类型或资源,则应使用魔法函数=>如u wakeup或u sleep来序列化反序列化资源或复杂的数据类型。根据php.net,在使用serialize()时,会尝试在适当的时间自动调用u wakeup/u sleep,所以你所要担心的就是函数本身的实现。不过,我的猜测是,这有点超出了OP的要求!这不是序列化。除了序列化部分,尽管这是一个很好的解释(特别是关于实现_toString()的部分),但您是正确的,谢谢,已经修改了我的答案。这是在我的答案之前吗?!对不起,我没看见。删除了我的,升级了你的。uu toString()&{$this->name}。杰出的这正是我所需要的。仅当对象可以强制转换为字符串时才有效,例如,implements\uu toString()。显然,在这种情况下它不是。这最适合将对象值转换为字符串,即(string)$object->value。当我们返回混合类型时,这非常有用。+1这似乎是解决“问题”的逻辑方法