12

使用後に次のような配列がありますprint_r

Array ( [0] => Array ( [0] => piklu [name] => piklu ) [1] => Array ( [0] => arindam [name] => arindam ) [2] => Array ( [0] => shyamal [name] => shyamal ) [3] => Array ( [0] => arko [name] => arko ) [4] => Array ( [0] => pamela [name] => pamela ) [5] => Array ( [0] => dodo [name] => dodo ) [6] => Array ( [0] => tanmoy [name] => tanmoy ) [7] => Array ( [0] => jitu [name] => jitu ) [8] => Array ( [0] => ajgar [name] => ajgar ) ) 

今、私はこの配列をファイルに直接書きたいと思っています。メソッドを使用していfile_put_contentsますが、元のように正確にファイルからデータを取得する方法がわかりません。これを解決するアイデアはありますか?

4

5 に答える 5

33

現時点での問題は、基本的に、ファイルに文字列しか書き込めないことです。したがって、使用するにはfile_put_contents、まずデータを文字列に変換する必要があります。

この特定のユース ケースには、任意の PHP データ型を文字列 (リソースを除く) に変換するserializeという関数があります。

これを使用する方法の例を次に示します。

$string_data = serialize($array);
file_put_contents("your-file.txt", $string_data);

後でデータを抽出することも必要になるでしょう。unserializeを使用して、文字列データをファイルから配列に戻すだけです。

これはあなたがそれを行う方法です:

$string_data = file_get_contents("your-file.txt");
$array = unserialize($string_data);
于 2013-02-14T06:41:45.383 に答える
8

次の 2 つの方法があります。

(1) 配列オブジェクトの JSON 表現をファイルに書き込みます。

$arr = array( [...] );
file_put_contents( 'data.txt', json_encode( $arr ) );

じゃあ後で...

$data = file_get_contents( 'data.txt' );
$arr = json_decode( $data, true );

(2) 配列オブジェクトのシリアル化された表現をファイルに書き込みます。

$arr = array( [...] );
file_put_contents( 'data.txt', serialize( $arr ) );

じゃあ後で...

$data = file_get_contents( 'data.txt' );
$arr = unserialize( $data );

シリアル化ほど簡単に破損しないため、JSON メソッドを好みます。データ ファイルを開いて内容を編集することができ、頭を悩ますことなくエンコード/デコードされます。シリアル化されたデータは簡単に変更したり、破損したりできません。そうしないと、unserialize() が機能しません。各変数は型と長さによって定義され、これらの値は実際に行っている変更に合わせて更新する必要があります。

于 2013-02-14T06:41:10.577 に答える
4

file_put_contentsは、配列ではなく文字列をファイルに書き込みます。http://php.net/manual/en/function.file-put-contents.php

その print_r に表示されている内容をファイルに書き込みたい場合は、次のようにします。

ob_start();
print_r($myarray);
$output = ob_get_clean();
file_put_contents("myfile.txt",$output);
于 2013-02-14T06:42:29.063 に答える
1

確かではありませんが、おそらくこのようなものです。書き込み時に配列を serialize() したい。配列をtest.txtに入れます

file_put_contents('test.txt', serialize($array));
于 2013-02-14T06:41:40.187 に答える