0
1

More than 3 years have passed since last update.

PHP 簡易掲示板作成 表示編 #2

Posted at

PHP 簡易掲示板作成 データ保存編 #1の続き
データの保存内容

test.txt
1<>yuya<>完成<>2021/2/8 10:13:16
2<>yuya<>完成<>2021/2/8 10:13:22
3<>yuya<>完成<>2021/2/8 10:13:25

目標

入力フォームのすぐ下部にテキストファイルの内容を表示する
1. ファイルを1行ずつ読み込み、配列変数に代入する
2. 配列の数だけ処理をする
3. 処理内容:区切り文字「<>」で分割して、それぞれの値を取得
4. 処理内容:上記で取得した値を表示する

入力フォームのすぐ下部にテキストファイルの内容を表示する

1. ファイルを1行ずつ読み込み、配列変数に代入する
file関数:ファイルを読み込み行ごとに配列にして返す

PHP
$lines = file($filename,FILE_IGNORE_NEW_LINES);

file関数を使うことで以下のように配列が作れる

具体例
<?php
    $filename = "test.txt";
    $lines = file($filename,FILE_IGNORE_NEW_LINES);
    print_r($lines);
?>
結果
Array ( 
[0] => 1<>yuya<>完成<>2021/2/8 10:13:16
[1] => 2<>yuya<>完成<>2021/2/8 10:13:22
[2] => 3<>yuya<>完成<>2021/2/8 10:13:25
)

2. 配列の数(=行数)だけ処理をする
foreach文を使う

PHP
foreach($lines as $line){
      //処理
}

3. 処理内容:区切り文字「<>」で分割して、それぞれの値を取得
explode関数
文字列を指定した文字列で分割する関数。分割された文字列は、配列の各要素として格納される。

PHP
$elements = explode("<>",$line);

explode関数の実際の挙動

具体例
$str ="1<>yuya<>完成<>2021/2/8 10:13:16";
$str = explode("<>",$str);
print_r($str);

echo $str[0];
結果
Array (
[0] => 1
[1] => yuya
[2] => 完成 
[3] => 2021/2/8 10:13:16 
)

1

4. ループ処理内:上記で取得した値を表示する

PHP
echo $elements[0].$elements[1].$elements[2].$elements[3];

何回も$elements[i]を書くので、for文繰り返し処理を行う
・始めの値:$iをインデックス番号として扱う
      インデックス番号[0]から順番に取得したので0→$i = 0
・条件式 :インデックス番号 < 要素の数
count関数を使って配列の要素の数を出す→$i < count($elements)
・増減式 :処理一回ごとに、値を1ずつ増やす→$i = $i + 1→→$i++

PHP
for($i = 0 ; $i < count($elements); $i++){
    echo $elements[$i];
}

まとめ

PHP
<?php
    $filename = "test.txt";

    //ファイルを行ごとに要素として配列に格納
    $lines = file($filename,FILE_IGNORE_NEW_LINES);

    //格納された要素毎の処理を行う
    foreach($lines as $line){

        //要素を"<>"で分割して配列に格納
        $elements = explode("<>",$line);

        //格納した要素を取り出し表示する
        for($i = 0 ; $i < count($elements); $i++){
            echo $elements[$i];
        }
    echo "<br>";
    }
?>
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1