10

我已将来自外部服务器的响应保存到文本文件中,因此我不需要继续运行连接请求。相反,也许我可以将文本文件用于我的操作目的,直到我再次被读取以重新连接。(另外,我的连接请求仅限于这个外部服务器)

这是我保存到文本文件的内容:

记录.txt

Array
(
    [0] => stdClass Object
        (
            [id] => 552
            [date_created] => 2012-02-23 10:30:56
            [date_modified] => 2012-03-09 18:55:26
            [date_deleted] => 2012-03-09 18:55:26
            [first_name] => Test
            [middle_name] => 
            [last_name] => Test
            [home_phone] => (123) 123-1234
            [email] => someemail@somedomain.com
        )
     [1] => stdClass Object
        (
            [id] => 553
            [date_created] => 2012-02-23 10:30:56
            [date_modified] => 2012-03-09 18:55:26
            [date_deleted] => 2012-03-09 18:55:26
            [first_name] => Test
            [middle_name] => 
            [last_name] => Test
            [home_phone] => (325) 558-1234
            [email] => someemail@somedomain.com
        )
)

数组中实际上还有更多,但我确信 2 没问题。

由于这是一个文本文件,我想假装这是实际的外部服务器(向我发送相同的信息),我如何再次使它成为一个真正的数组?

我知道我需要先打开文件:

<?php
$fp = fopen('records.txt', "r"); // open the file
$theData = fread($fh, filesize('records.txt'));
fclose($fh);
echo $theData;  
?>

到目前为止$theData是一个字符串值。有没有办法将它转换回它最初出现的数组?

4

4 回答 4

30

更好地序列化并保存到文件,然后反序列化回数组。

// serialize your input array (say $array)
$serializedData = serialize($array);

// save serialized data in a text file
file_put_contents('your_file_name.txt', $serializedData);

// at a later point, you can convert it back to array like:
$recoveredData = file_get_contents('your_file_name.txt');

// unserializing to get actual array
$recoveredArray = unserialize($recoveredData);

// you can print your array like
print_r($recoveredArray);
于 2012-11-17T17:00:07.390 回答
4

那时您不应该将其保存为print_r格式。

使用任一:

这使得将文件解码回数组变得简单。

尽管有一个print_r 解码器。但这应该是最后的手段,只有当你不能影响输入数据(你可以!)。

于 2012-11-17T16:58:10.157 回答
3

您可以serialize先将数组作为文本写入文件。然后你可以从文件中读回数据,unserialize将它变成一个数组。

于 2012-11-17T16:55:52.213 回答
2

JSON版本

$json_data = json_encode($the_array);
file_put_contents("records.txt", $json_data);

// Recovering
$the_data = file_get_contents("records.txt");
$the_array = json_decode($the_data);
于 2012-11-17T18:25:13.557 回答