連想配列の入出力

連想配列をファイルに保存します。
ファイルから連想配列を入力します。

連想配列をファイルに保存

PHP のソースコードを Shift-JIS でタイプして c:\DATA\PHP\ に格納して下さい。
<?php
    $arr = array( 'red'=>'赤', 'blue'=>'青', 'green'=>'緑' );

    // 連想配列を "rensou.txt" に書き出す
    if (!($fp = fopen("rensou.txt","w")))
    {   die('rensou.txt write open error');  }
    foreach ($arr as $key => $val)
    {   fputs($fp, "$key\r\n");
        fputs($fp, "$val\r\n");
    }
    fclose($fp);
?>

【実行画面】
C:\DATA\PHP>php rensou_io.php
C:\DATA\PHP>type rensou.txt
red
赤
blue
青
green
緑
C:\DATA\PHP>

プログラムの説明

  1. $arr に連想配列を定義します。
  2. 連想配列を "rensou.txt" に書き出します。
    このような場合は foreach 文を使うのがお勧めです。
  3. ($arr as $key => $val) でキーと値を取得します。
    キーと値を交互に fputs() で改行コードを付加して書き出します。
    改行コードは一行ずつ入力するときに必要です。
  4. type コマンドで作成された rensou.txt を印字しています。

ファイルから連想配列を入力

PHP のソースコードを Shift-JIS でタイプして c:\DATA\PHP\ に格納して下さい。
<?php
    // "rensou.txt" から連想配列に読み込む
    if (!($fp = fopen("rensou.txt","r")))
    {   die('rensou.txt read open error');  }
    while(!feof($fp))
    {   $key= fgets($fp);
        $key= str_replace(array("\r", "\n"), '', $key);
        $val= fgets($fp);
        if (strlen($key)>1) $ary[$key]= $val;
    }
    fclose($fp);
    //連想配列を表示
    print_r($ary);
?>

【実行画面】
C:\DATA\PHP>php rensou_io.php
Array
(
    [red] => 赤

    [blue] => 青

    [green] => 緑

)
C:\DATA\PHP>

プログラムの説明

  1. "rensou.txt" には連想配列のキーと値が交互に格納されています。
  2. $key= fgets($fp); でキーを入力します。
    $key= str_replace(array("\r", "\n"), '', $key); で改行コードを削除します。
  3. $val= fgets($fp); で値を入力します。
  4. if (strlen($key)>1) $ary[$key]= $val; でキーが2文字以上を確認して連想配列に登録します。
    キーの長さの確認は、キーが空('')の配列を作らないためです。
  5. print_r($ary); で作成された連想配列を印字します。

前田稔の超初心者のプログラム入門
PHP Program