【PHP】テキストファイルのデータを配列に入れる方法

公開日:
更新日:
カテゴリー: PHP

手動で配列にデータを入れる場合、その数が数個であれば簡単に処理できますが、50とか100以上になるとかなり面倒で保守性も落ちます(ダブルクォーテーションとかカンマを気にしながらコピペするため)。

そんなときはテキストファイルを作成し、そのテキストファイルに1行1データを書き込み、それを配列に格納してあげれば捗ります。

1.テキストファイルの作成

任意のテキストファイルを作成し(ここでは「sample.txt」)、データを1行1データ入れます。

【sample.txt】
りんご
ばなな
みかん
いちご

2.ファイルを読み込み、配列に格納

<?php
//テキストファイルのパス指定
$file = dirname(__FILE__) . '/sample.txt';
//配列に格納
$array = @file($file, FILE_IGNORE_NEW_LINES);
//配列のデータを出力
print_r($array);
?>

【ポイント】
「@file($file);」のみでもデータを配列に格納できますが、改行コードが含まれます。
この時、in_array関数などで検索をかけた場合マッチしません。
そのため、「FILE_IGNORE_NEW_LINES」で改行コードを削除してあげます。

3.file関数について

file関数は、テキストファイルなどのサーバー内のファイルのみならず、Web上のファイル(外部ファイル)も1行1データとして配列に格納してくれます。

@file('http://○○○.com/');

似たようなものに、file_get_contents関数がありますが、その違いは、file関数は配列としてデータを取得することです。

個人的メモ

テキストファイルのデータを配列に入れて検索を行う方法

テキストファイルのデータを配列に入れた後、in_array関数で検索をおこなう場合、テキストファイルがないと以下のエラーが起きる。

Warning: in_array() expects parameter 2 to be array, boolean given in エラーが起きたファイルまでのパス on line エラーが起きた行

このエラーを回避するためには、is_file()関数でファイルの存在を確認してから処理を実行する。

<?php
//テキストファイルのパス指定
$file = dirname(__FILE__) . '/sample.txt';

//検索ワード
$word = '○○○';

//テキストファイルがあるか確認後処理を実行
if(is_file($file)){
	//配列に格納
	$array = @file( $file, FILE_IGNORE_NEW_LINES);
	//配列のデータに指定ワードがあるか検索
	if(in_array($word,$array)){
		echo 'マッチしました';
	}else{
		echo 'マッチしませんでした';
	};
}else{
	//テキストファイルがない場合
	echo "指定されたファイルがありません。";
}
?>

テキストファイルのデータを配列に入れてループで処理する方法

<?php
//テキストファイルのパス指定
$file = dirname(__FILE__) . '/sample.txt';

//テキストファイルがあるか確認後処理を実行
if(is_file($file)){
	//配列に格納
	$array = @file( $file, FILE_IGNORE_NEW_LINES);

	//配列のデータをループで処理
	foreach($array as $value){
		echo $value;
	}
}else{
	//テキストファイルがない場合
	echo "指定されたファイルがありません。";
}
?>

 

あわせて読んでほしい!

 

コメント

まだコメントはありません。

コメントフォーム
お名前
コメント