連想配列の入出力

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

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

rensou_io.php のソースコードを utf-8(BOM 無し)でタイプして 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);
?>

【実行画面】
Microsoft Windows [Version 10.0.18363.836]
(c) 2019 Microsoft Corporation. All rights reserved.

C:\Users\maeda>CD C:\DATA\PHP

C:\DATA\PHP>php rensou_io.php
Array
(
    [red] => 赤

    [blue] => 青

    [green] => 緑

)

Windows に Shift_JIS が使われていた頃は type コマンドで rensou.txt を印字出来たのですが、Windows10 では全角文字が文字化けして使えなくなりました。
C:\DATA\PHP>type rensou.txt
red
襍、
blue
髱・
green
邱・

プログラムの説明

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

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

PHP のソースコードを utf-8(BOM 付き)でタイプして 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" には連想配列のキーと値が交互に格納されています。
    「die」関数は「exit」関数のエイリアスで、スクリプトの実行を終了します。
        // "rensou.txt" から連想配列に読み込む
        if (!($fp = fopen("rensou.txt","r")))
        {   die('rensou.txt read open error');  }
    
  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