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. ファイルを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>";
}
?>