人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

PHPでの質問です。

$buff=file("data.dat");
$element = explode(",",$buff);
echo $element[0];

上記のようにしてもArrayとだけ表示されます。
なにか初歩的なことを見落としていると思うのですが
なぜなんでしょうか?

●質問者: quocard
●カテゴリ:インターネット ウェブ制作
✍キーワード:DAT echo PHP
○ 状態 :終了
└ 回答数 : 5/5件

▽最新の回答へ

1 ● ぱこち
●20ポイント

$buff=file_get_contents("data.dat"); もしくは

$element = explode(",",$buff[0]); などのようにしないと配列を分割している格好になります。

◎質問者からの返答

ありがとうございます。

参考にさせていただきます。


2 ● Sampo
●20ポイント

explode()に渡す二番目の引数は文字列でないといけません。

file()関数はファイルの内容を一行ごとの配列で返すので、直接はexplode()に渡せないのです。

file()のかわりにfile_get_contents()を使ってください。

◎質問者からの返答

ありがとうございます。

少々勘違いが入っていたようです。

参考にさせていただきます。


3 ● tetsuyasodo
●20ポイント

推測ですが、data.datというファイルはカンマ区切りで複数行からなるテキスト(CSVのようなもの)だと思います。

ですのでfile()の返り値は各行内容を要素とする配列となります。

したがって各行の内容をexplode()するためにはforeachなどを

使って要素を取り出す必要があります。

$buff=file("data.dat");

foreach($buff as $tmprow) {

$element = explode(",",$tmprow);

echo $element[0];

}

◎質問者からの返答

ありがとうございます。

私の勘違いも混じっておりました。

参考にさせていただきます。


4 ● SALINGER
●20ポイント

file() はファイルを配列に入れて返します。 配列の各要素はファイルの各行に対応します。

data.datを

a

b

c

にすれば

$buff=file("data.dat"); 
echo $buff[0];

a

と出力されます。

◎質問者からの返答

ありがとうございます。

参考にさせていただきます。


5 ● kn1967
●20ポイント

既に出揃っているようですが、具体的にどのような中身になっているかを確認することをまず行ってから、1?4の回答を読み直すと理解が深まると思いますので、あえて書き込みいたします。

$buff=file("data.dat");
print_r($buff);

の2行を実行してみてください。

$buff の中身がどのようになっているかを見ることが出来ます。

その次に

$buff=file("data.dat");
$element = explode(",",$buff);
print_r($element);

の3行を実行してみてください。

$element の中身がどのようになっているかを見ることが出来ます。

以上、確認してみてください。

◎質問者からの返答

ありがとうございます。

順を追って確認を行うというもの

遠回りのようですが確実な手ですね。

参考にさせていただきます。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ