• ベストアンサー

テキストファイルからの配列化

こんにちは、 下記内容のテキストを呼び込み 配列を作りたいのですが 可能でしょうか? (テキストは3列構成になっており 添字?、id、bodyの構成になっています。) テキスト内容----------------- //あ行 a1,1,あ1 //か行 b1,1,か1 b1,3,か2 配列---------------------------- list['a1']['id']=1 list['a1']['body']=あ1 list['b1']['id']=1 list['b1']['body']=か1 list['b1']['id']=3 list['b1']['body']=か2

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

  • ベストアンサー
  • agunuz
  • ベストアンサー率65% (288/438)
回答No.1

仕様がおかしいです。 list['b1']['id']=1 list['b1']['body']=か1 list['b1']['id']=3 list['b1']['body']=か2 同じ添え字に別々の内容を代入するというのはプログラミング言語として無理です($list['b1']['id']を参照したときに 1 と 3 のどちらが返るのか・・・)。 (蛇足) list['b1'][0]['id']=1 list['b1'][0]['body']=か1 list['b1'][1]['id']=3 list['b1'][1]['body']=か2 となっていいのであれば、 <?php $list = array(); $lines = file('test.txt') or die('cannot read'); foreach ($lines as $line) { if (substr($line,0,2) === '//') { continue; } list($idx, $id, $body) = explode(',', rtrim($line)); $list[$idx][] = array('id'=>$id, 'body'=>$body); } print '<pre>'; print_r($list); print '</pre>'; などと書けます。 「CSVファイル」ならexplodeじゃなくてstr_getcsvする(あるいはfgetcsvで読み込む)べきでしょうけど、詳細な仕様が提示されていないので手抜きしました(汗

関連するQ&A