2012-11-06 173 views
2

我打算將返回的對象保存到文件中,稍後再進行審閱。 爲了清楚起見,我正在使用外部API服務,並收集他們的數據,以解析到另一個數據庫中。PHP將對象轉換爲字符串

這是我有:

<?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中?

+0

您是試圖存儲數據供以後編程使用,還是僅供人閱讀? –

回答

2

正如上面所說的,你可以序列化(),但要回答你的問題:

我怎麼把的print_r()到reviewLater.txt?

如果您設置的print_r()爲true的第二個參數,將有輸出的一個字符串,如果你正在處理簡單的對象,你可以操縱它是這樣:)

+0

這正是我所期待的。而且很簡單 – coffeemonitor

6

對象可以用PHP的serialize()函數序列化並保存到文件中。後來你可以unserialize()他們再次使用它們,如果你想。

$stringData = serialize($singlerecord); 

有趣的事實:這是將對象緩存到文件的一種方法。

編號:http://php.net/manual/en/function.serialize.php

+0

那麼['var_export'](http://se.php.net/manual/de/function.var-export.php)。 – clentfort

+0

實際上有很多方法可以做到這一點,這一切都取決於用例。謝謝,將其添加到答案中。 –

0

由於有關序列化數據供以後編程使用的方法的問題已經給出,我會提及如果您只關心人類可讀的輸出,則可以使用fwrite($fh, var_export($singlerecord, true));以字符串輸出方式打印人類可讀的表示形式。