• ベストアンサー

AならBを読み込む場合

教えてください 現在外部テキストファイルにデータを置いているのですが PHPで読み込む際に条件を絞って読み込ませる方法がわからず困っています 自分なりに調べては見たのですが、なかなか条件に当てはまらず・・・ 外部テキストファイルには A     B 001    ABC 002    DEF ・・・ というような並びにしています $_GETを使ってAが渡された場合、表示するにはBという感じにしたいのです hoge.php?p=A //AをGET ↓ Bです //Bを表示 この際、どのようにしてテキストの中の配列を読み込ませたらいいのか 分からず困っています できれば、php内を編集することなく外部テキストファイルのデータが増えても 対応できるようにしたいのです またDBは今のところ使い方がイマイチ理解できていないので使わない方向で 分かりにくい説明ではあるかもしれませんがお願いします

質問者が選んだベストアンサー

  • ベストアンサー
noname#18096
noname#18096
回答No.2

CSV形式のフォーマットのようですが、区切り文字には何を使っているのでしょうか? 例えば、「タブ文字」を区切り文字にしているのでしたら、以下のようにしてご希望の動作を実現できます。 $lines = file('log.txt'); // 外部テキストファイルを配列に読み込み foreach($lines as $val){ list($data1, $data2) = explode("\t", $val); // データ展開 if($_GET['p']) == $data1){ // クエリーと内容が一致したとき $exp1 = $data1; $exp2 = $data2; } } echo "$exp1 $exp2"; // 一致した内容を出力

ex5000
質問者

お礼

今現在の私の知識ではこの方法で理解できました ありがとうございました

その他の回答 (2)

noname#18096
noname#18096
回答No.3

失礼。 #2 で break文 を入れ忘れました。(そのままでも結構ですが、無駄があります) if($_GET['p']) == $data1){ // クエリーと内容が一致したとき $exp1 = $data1; $exp2 = $data2; break; } 未知の関数がありましたら、PHPマニュアルで検索なさって下さい。 ・file関数 ・explode関数 ・foreach関数

参考URL:
http://www.php.net/manual/ja/
  • fire--
  • ベストアンサー率49% (146/293)
回答No.1

$h=fopen('テキストファイル名','r'); while($data=fgets($h)){ $data_array = explode(' ',$data); $table["$data_array(0)"]=$data_array(1); } とでもすれば、$tableという連想配列に読み込めますね。 isset($table["キー"])でそのキー値が存在するか判ります。 A列に同じ値がふたつ合った場合は後ろにあるのが有効で、 前のは無視されます。

ex5000
質問者

お礼

$tableという関数は勉強しはじめて初めて見ました 今後参考にさせていただきます ありがとうございました

関連するQ&A