PHP数组保存到文本文件

时间:2012-11-17 16:54:03

标签: php arrays

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

以下是我保存到文本文件中的内容:

records.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 个答案:

答案 0 :(得分:22)

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

// 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);

答案 1 :(得分:3)

在将数组作为文本写入文件之前,您可以serialize数组。然后,您可以从文件中读取数据unserialize将其重新转换为数组。

答案 2 :(得分:3)

您不应该以{{1​​}}格式保存它。

使用:

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

虽然有一个print_r decoder。但这应该是最后的手段,只有当你不能影响输入数据时(你可以!)。

答案 3 :(得分:0)

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);