10

外部サーバーからの応答をテキストファイルに保存したので、接続要求を実行し続ける必要はありません。代わりに、再接続のために読み取られるまで、テキストファイルを操作目的で使用できる可能性があります。(また、私の接続要求はこの外部サーバーに制限されています)

これが私がテキストファイルに保存したものです:

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

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 に答える