PHPの質問です。


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

回答の条件
  • 1人10回まで
  • 登録:
  • 終了:2010/06/07 16:19:30
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:otaxa No.5

回答回数25ベストアンサー獲得回数8

ポイント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ベストアンサー獲得回数52

ポイント10pt

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

id:black_kenchan

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

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

回答回数480ベストアンサー獲得回数79

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

回答回数4ベストアンサー獲得回数0

ポイント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

回答回数1422ベストアンサー獲得回数226

ポイント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

回答回数25ベストアンサー獲得回数8ここでベストアンサー

ポイント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ベストアンサー獲得回数0

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
    ホントですね…

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

    すいません…

    以後気をつけます。

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

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

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

回答リクエストを送信したユーザーはいません