phpで


1 配列(多次元含む)を一度ファイルに書込
2 ファイルから再度読み込み同一の配列構造で変数に格納

上記を行いたいのですがどうするのがセオリーでしょうか?


回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2014/06/25 19:29:44
  • 終了:2014/06/25 22:38:39

ベストアンサー

id:psne No.3

ぽけっとしすてむ回答回数462ベストアンサー獲得回数2482014/06/25 21:51:06

ポイント100pt

たとえば、このようなデータがあり、

<?php
$data = array(
	123,456,789
);

array (size=3)
0 => int 123
1 => int 456
2 => int 789

これを、serializeでファイル等に保管できる形に変換します。

<?php
$s_data = serialize($data);

string 'a:3:{i:0;i:123;i:1;i:456;i:2;i:789;}' (length=36)

このような文字列になった状態であれば、file_put_contents等を利用してファイルに保管する事ができます。

<?php
file_put_contents('./filename.txt', $s_data);

連想配列でも、同様に変換することができます。

<?php
$data = array(
	'test1'=>'data1',
	'test2'=>'data2'
);
$s_data = serialize($data);

string 'a:2:{s:5:"test1";s:5:"data1";s:5:"test2";s:5:"data2";}' (length=54)


保管したデータは、逆の手順で取り出して、unserializeにて元に戻すことが可能です。
これらを1行で行っているのがNo2の回答になります。

※serializeで変換・保管されたデータは、テキストエディタ等を使って手動で書き換える事も可能ですが、手間がかかる上にデータを壊す可能性もあり、良い事がありません。

その他の回答(3件)

id:jan8 No.1

jan8回答回数454ベストアンサー獲得回数962014/06/25 19:52:45

1本のデータにバラして、次元数、各次元の要素数と共にファイルに書き込む

id:snow0214 No.2

snow0214回答回数470ベストアンサー獲得回数1162014/06/25 21:14:12

ポイント100pt

配列を $arr とすると、関数serialize, unserializeを使うのが簡単です。

1 配列(多次元含む)を一度ファイルに書込

file_put_contents("hoge.dat", serialize($arr));

2 ファイルから再度読み込み同一の配列構造で変数に格納

$arr = unserialize(file_get_contents("hoge.dat"));
id:psne No.3

ぽけっとしすてむ回答回数462ベストアンサー獲得回数2482014/06/25 21:51:06ここでベストアンサー

ポイント100pt

たとえば、このようなデータがあり、

<?php
$data = array(
	123,456,789
);

array (size=3)
0 => int 123
1 => int 456
2 => int 789

これを、serializeでファイル等に保管できる形に変換します。

<?php
$s_data = serialize($data);

string 'a:3:{i:0;i:123;i:1;i:456;i:2;i:789;}' (length=36)

このような文字列になった状態であれば、file_put_contents等を利用してファイルに保管する事ができます。

<?php
file_put_contents('./filename.txt', $s_data);

連想配列でも、同様に変換することができます。

<?php
$data = array(
	'test1'=>'data1',
	'test2'=>'data2'
);
$s_data = serialize($data);

string 'a:2:{s:5:"test1";s:5:"data1";s:5:"test2";s:5:"data2";}' (length=54)


保管したデータは、逆の手順で取り出して、unserializeにて元に戻すことが可能です。
これらを1行で行っているのがNo2の回答になります。

※serializeで変換・保管されたデータは、テキストエディタ等を使って手動で書き換える事も可能ですが、手間がかかる上にデータを壊す可能性もあり、良い事がありません。

id:watercooler No.4

井戸端さん回答回数289ベストアンサー獲得回数512014/06/25 22:18:21

ポイント100pt

配列のファイル保存はコスト高でセキュリティも不安だから「使わない」がセオリーよ。

たしかにserialize/unserializeは便利よ。でもそれは安全圏内での使用に限るわ。
シェル使いやperl使いの人なら当たり前でもphp使いの人は外部からアクセスできない場所にファイルを保管するなんてあんまり考えなかったりするんだもの。危険極まりないわ。

phpのプログラム間でデータを受け渡したいならセッション変数ね。
PHP: セッション関数 - Manual

長期保存ならデータベースに入れてしまうの。たいていのサーバーはMySQLくらい使えるわよ。
PHP: mysqli - Manual

大規模システムで多数のユーザーが共有するデータならmemcachedなんかになるわ。最適化はとても難しいわよ。
PHP: Memcache - Manual

こんなのは序の口よ。やりかたなんてまだまだあるわ。
なぜ保存しなければならないの?保存は本当に必要なのってところから考え直しになるかもしれないわね。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません