【问题标题】:PHP converting object to stringPHP将对象转换为字符串
【发布时间】:2012-11-06 21:31:33
【问题描述】:

我打算将返回的对象保存到文件中,以便稍后下载查看。 为了清楚起见,我正在使用外部 API 服务,并收集它们的数据,以便解析到另一个数据库中。

这是我所拥有的:

<?php
require('class.php');
$client = new connect2Them();
$logged_in = $client->login();
if(!$logged_in){
  echo "Not connected!"; die();
}

$records = $client->get_records();
if(count($records < 1){
  echo "No records found"; die();
}

$singlerecord = $records[0];
print_r($singlerecord);

?>

print_r() 工作正常,我得到了非常大量的数据。我是通过命令行来做这一切的,所以我想把它保存到一个文本文件中。

我在我的 $singlerecord 下添加了这个:

<?php
$myFile = "reviewLater.txt";
$fh = fopen($myFile, 'w') or die("can't open file");
$stringData = $singlerecord;
fwrite($fh, $stringData);
fclose($fh);

?>

我从 PHP 中得到这个错误: PHP 警告:fwrite() 期望参数 2 是字符串,对象在....中给出。

如何将 print_r() 放入 reviewLater.txt?

【问题讨论】:

  • 您是要存储数据以供以后编程使用,还是仅供人类阅读?

标签: php string object


【解决方案1】:

对象可以用 PHP 的serialize() 函数序列化并保存到文件中。以后你可以unserialize()他们再次使用它们,如果你愿意的话。

$stringData = serialize($singlerecord);

有趣的事实:这是将对象缓存到文件的一种方法。

参考:http://php.net/manual/en/function.serialize.php

【讨论】:

  • 还有var_export
  • 实际上有很多方法可以做到这一点,这完全取决于用例。感谢您将其添加到答案中。
【解决方案2】:

如上所述,您可以序列化(),但要回答您的问题:

如何将 print_r() 放入 reviewLater.txt?

如果你将print_r()的第二个参数设置为true,就会有一个输出字符串,你可以这样操作它:)

【讨论】:

  • 这正是我想要的。然而如此简单
【解决方案3】:

如果您正在处理简单的对象(例如,不是引用自身或自定义类的对象),您可以使用 json_encode 将对象编码为 JSON,然后使用 json_decode 对其进行解码。

请参阅 http://php.net/manual/en/function.json-encode.phphttp://www.php.net/manual/en/function.json-decode.php

【讨论】:

    【解决方案4】:

    既然已经给出了关于序列化数据以供以后编程使用的方法的问题,我会提到,如果您只是关心人类可读的输出,您可以使用fwrite($fh, var_export($singlerecord, true)); 将人类可读的表示形式打印为字符串输出.

    【讨论】:

      猜你喜欢
      • 2014-04-09
      • 1970-01-01
      • 2010-11-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-14
      • 2011-08-02
      相关资源
      最近更新 更多