- ベストアンサー
AならBを読み込む場合
教えてください 現在外部テキストファイルにデータを置いているのですが PHPで読み込む際に条件を絞って読み込ませる方法がわからず困っています 自分なりに調べては見たのですが、なかなか条件に当てはまらず・・・ 外部テキストファイルには A B 001 ABC 002 DEF ・・・ というような並びにしています $_GETを使ってAが渡された場合、表示するにはBという感じにしたいのです hoge.php?p=A //AをGET ↓ Bです //Bを表示 この際、どのようにしてテキストの中の配列を読み込ませたらいいのか 分からず困っています できれば、php内を編集することなく外部テキストファイルのデータが増えても 対応できるようにしたいのです またDBは今のところ使い方がイマイチ理解できていないので使わない方向で 分かりにくい説明ではあるかもしれませんがお願いします
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
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"; // 一致した内容を出力
その他の回答 (2)
失礼。 #2 で break文 を入れ忘れました。(そのままでも結構ですが、無駄があります) if($_GET['p']) == $data1){ // クエリーと内容が一致したとき $exp1 = $data1; $exp2 = $data2; break; } 未知の関数がありましたら、PHPマニュアルで検索なさって下さい。 ・file関数 ・explode関数 ・foreach関数
- fire--
- ベストアンサー率49% (146/293)
$h=fopen('テキストファイル名','r'); while($data=fgets($h)){ $data_array = explode(' ',$data); $table["$data_array(0)"]=$data_array(1); } とでもすれば、$tableという連想配列に読み込めますね。 isset($table["キー"])でそのキー値が存在するか判ります。 A列に同じ値がふたつ合った場合は後ろにあるのが有効で、 前のは無視されます。
お礼
$tableという関数は勉強しはじめて初めて見ました 今後参考にさせていただきます ありがとうございました
お礼
今現在の私の知識ではこの方法で理解できました ありがとうございました