みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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

こんにちは、
下記内容のテキストを呼び込み
配列を作りたいのですが
可能でしょうか?
(テキストは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

投稿日時 - 2013-01-23 07:34:04

QNo.7906086

困ってます

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

仕様がおかしいです。

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で読み込む)べきでしょうけど、詳細な仕様が提示されていないので手抜きしました(汗

投稿日時 - 2013-01-23 09:08:35

ANo.1

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問