2009-06-27 10 views
11

$ dataは多次元配列ですが、配列をエコーし​​ているときに出力されるので、ファイルに内容を入れるために関数を使用しています。ファイル内には内容がありませんアレイファイルを配列に入れます

ファイルを自動的に作成し、データ(配列)を記録するその他の機能は何ですか?

ありがとうございます。

答えて

22

あなたは、ファイルを読んだ後足す上のアレイ、およびunserialize()serialize()たい。

$array = array('foo' => 'bar'); 
file_put_contents('foo.txt', serialize($array)); 
$array = unserialize(file_get_contents('foo.txt'))); 

ああ、私は本当にあなたがあなたの配列をecho'dが、echo array('foo' => 'bar');は常にArrayを印刷する方法を今しないでください。

+0

私は間違った用語を使用して申し訳ありませんが、私は私の配列を表示するためにprint_rを使用しています – Shishant

+0

ちょうどメモ、あなたの行方不明の2行目 – Uberfuzzy

+0

thx!それを固定した。 :-) –

1

アレイを読み込んだ後にファイルを読み込んだ後にユーザーができます。配列をjson_encodeというJSONオブジェクトとしてエンコードし、.jsonファイルに書き込むこともできます。

4

あなたはそれが読めるようにしたい場合は、あなたができる:

<?php 
ob_start(); 
print_r($data); 
$textualRepresentation = ob_get_contents(); 
ob_end_clean(); 

file_put_contents($file, $textualRepresentation); 
?> 
+4

$ textualRepresentation =ますprint_r($データ、真の);うまくやれるでしょう:-) –

+0

母...それは分かりませんでした。ありがとう:) –

0

配列の各メンバーを走査し、それ自体が配列であるかどうかを調べる再帰関数を設定することができます。そうであれば、このメンバーに対して関数を再度呼び出すことができます。 serializeは良いオプションです使用して、最良の答え状態として

$contents = var_export($array, true); 

file_put_contents('foo.txt', "<?php\n return {$contents};\n ?>"); 
// and then use something like this to get it: 
$new_array = require('foo.txt'); 
1

Definetellyあなたがvar_export機能を使用することができます。このように。ただし、配列の各項目の後にPHP_EOLを使用して配列を格納し、fileコマンドを使用して配列を取得することもできます。

function file_put_array($path, $contents) 
{ 
    if (is_array($contents)) 
    { 
     foreach ($contents as $item) 
      $str .= $item.PHP_EOL; 
     file_put_contents($path, $str); 
     return true; 
    } 
    return false; 
} 

そして盗んする内容:

$contents = file($path, FILE_IGNORE_NEW_LINES); 
0

function file_put_contents_deep($file, $data) { 
    if (is_array($data) { 
    foreach ($data as $item) { 
     if (is_array($item) { 
     file_put_contents_deep($file, $item); 
     else { 
     file_put_contents($file, $item); 
     } 
    } 
    } else { 
    file_put_contents($file, $data); 
    } 
} 
関連する問題