3

我打算将返回的对象保存到文件中,以供稍后下载查看。为了清楚起见,我正在使用外部 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?

4

4 回答 4

6

对象可以用 PHP 的serialize()函数序列化并保存到文件中。稍后您可以 unserialize()根据需要再次使用它们。

$stringData = serialize($singlerecord);

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

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

于 2012-11-06T21:32:51.677 回答
2

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

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

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

于 2012-11-06T21:34:01.990 回答
0

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

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

于 2012-11-06T21:36:01.767 回答
0

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

于 2012-11-06T21:36:41.613 回答