PHPの質問です。


配列変数をメモ帳などに保存して、再度読み込みしたいのですが、何か用意方法はありませんか?

回答の条件
  • 1人10回まで
  • 13歳以上
  • 登録:2010/06/03 18:06:47
  • 終了:2010/06/07 16:19:30

ベストアンサー

id:otaxa No.5

Otaxa回答回数25ベストアンサー獲得回数82010/06/04 10:06:16

ポイント50pt

【serialize関数を使う】

配列をserialize関数でシリアライズし、そのテキストをメモ帳に保存します。

<?php
//記録したい配列
$array=array( 0=>'a' , 'b'=>'c', 'd'=>2 );
//配列の内容を表示
echo serialize($array);
?>

復元はunserialize関数でできます。

<?php
//メモ帳に記録したテキスト
$string='メモ帳の内容';
//配列の復元
$array=unserialize($string);
?>

【var_export関数を使う】

var_export関数の内容をメモ帳に保存します。

<?php
//記録したい配列
$array=array( 0=>'a' , 'b'=>'c', 'd'=>2 );
//配列の内容を表示
var_export($array);
?>

復元はeval関数でできます。

<?php
//メモ帳に記録したテキスト
$string='メモ帳の内容';
//配列を復元
eval('$array='.$string.';');//これ以降「$array」変数に配列が入ってます
?>
id:black_kenchan

有難う御座います。

希望通りに出来ました!

2010/06/07 16:17:51

その他の回答(5件)

id:Bombastus No.1

ホーエンハイム回答回数409ベストアンサー獲得回数522010/06/03 18:18:21

ポイント10pt

var_exportでテキストファイルに書き出し、include_onceで読み込めばいいでしょう。

id:black_kenchan

一応、教えて頂いた流れは既に試しているのですが、読み込みが上手くいかず配列変数にならずに困っています。

2010/06/03 18:29:28
id:koriki-kozou No.2

koriki-kozou回答回数480ベストアンサー獲得回数792010/06/03 18:53:19

2つの配列をb.phpに保存して、即座にインクルードして変数を出力するというサンプルを作ってみた

出力をバッファリングしてからファイルに保存するという手を使っている

<?php
$a1 = array('a' => 1, 'b' => 2);
$a2 = array('b' => 1, 'c' => array('d' => 2, 'e' => 3));

ob_start();
echo "<?php\n";
echo '$b1=';
var_export($a1);
echo ";\n";
echo '$b2=';
var_export($a2);
echo ";\n";
echo '?>';
$b = ob_get_contents();
ob_end_clean();

$f = fopen('b.php', 'w');
fputs($f, $b);
fclose($f);

include_once('b.php');
print_r($b1);
print_r($b2);
?>

http://jp2.php.net/manual/ja/function.ob-get-contents.php

id:black_kenchan

なるほどですね!

後で、試してみます。

有難う御座います。

2010/06/03 18:56:45
id:karronoli No.3

karronoli回答回数4ベストアンサー獲得回数02010/06/03 21:42:07

ポイント20pt

希望の処理はserialize/unserializeを使った処理です.

<?php
$a1 = array('a' => 1, 'b' => 2);
$a2 = array('b' => 1, 'c' => array('d' => 2, 'e' => 3));

// serializeにテキスト化したいデータを渡す.
// 複数の変数を一気に渡そうとarrayでまとめた.渡し方とファイル名はご自由に
file_put_contents('serialized.txt', serialize(array($a1, $a2)));
var_dump(unserialize(file_get_contents('serialized.txt')));

var_dumpの出力はこうなりました.

array(2) {
  [0]=>
  array(2) {
    ["a"]=>
    int(1)
    ["b"]=>
    int(2)
  }
  [1]=>
  array(2) {
    ["b"]=>
    int(1)
    ["c"]=>
    array(2) {
      ["d"]=>
      int(2)
      ["e"]=>
      int(3)
    }
  }
}

var_exportだと保存したい値の書かれたファイルをphpのコードとして直感的に読めますが,serializeは値を内部形式に変換するためそうはできません.

PHP: serialize - Manual

PHP: unserialize - Manual

id:black_kenchan

有難う御座います。

希望通りに出来ました!

2010/06/07 16:17:46
id:y-kawaz No.4

y-kawaz回答回数1420ベストアンサー獲得回数2252010/06/03 21:47:17

ポイント30pt

serializeunserializeでいいんじゃないでしょうか?

<?php

//保存
file_put_contents($filename, serialize($arr));

//読み込み
$arr = unserialize(file_get_contents($filename));

?>
id:black_kenchan

有難う御座います。

希望通りに出来ました!

2010/06/07 16:17:48
id:otaxa No.5

Otaxa回答回数25ベストアンサー獲得回数82010/06/04 10:06:16ここでベストアンサー

ポイント50pt

【serialize関数を使う】

配列をserialize関数でシリアライズし、そのテキストをメモ帳に保存します。

<?php
//記録したい配列
$array=array( 0=>'a' , 'b'=>'c', 'd'=>2 );
//配列の内容を表示
echo serialize($array);
?>

復元はunserialize関数でできます。

<?php
//メモ帳に記録したテキスト
$string='メモ帳の内容';
//配列の復元
$array=unserialize($string);
?>

【var_export関数を使う】

var_export関数の内容をメモ帳に保存します。

<?php
//記録したい配列
$array=array( 0=>'a' , 'b'=>'c', 'd'=>2 );
//配列の内容を表示
var_export($array);
?>

復元はeval関数でできます。

<?php
//メモ帳に記録したテキスト
$string='メモ帳の内容';
//配列を復元
eval('$array='.$string.';');//これ以降「$array」変数に配列が入ってます
?>
id:black_kenchan

有難う御座います。

希望通りに出来ました!

2010/06/07 16:17:51
id:Koriki-kozou No.6

小力小象回答回数53ベストアンサー獲得回数02010/06/07 15:55:16

My Soul, Your Beats!/Brave Song 【初回生産限定盤】

My Soul, Your Beats!/Brave Song 【初回生産限定盤】

  • アーティスト: Lia 多田葵
  • 出版社/メーカー: アニプレックス
  • 発売日: 2010-05-26
  • メディア: CD

  • id:koriki-kozou
    koriki-kozou 2010/06/07 17:08:59
    どうしてゼロポイントなんだと思ったら、先頭大文字の偽者が出たのか
  • id:black_kenchan
    ホントですね…

    大文字と小文字で違いますね。

    すいません…

    以後気をつけます。

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

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

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

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