PHPでの質問です。


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

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

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2007/01/30 00:50:40
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答5件)

id:pacochi No.1

回答回数247ベストアンサー獲得回数113

ポイント20pt

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

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

id:quocard

ありがとうございます。

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

2007/01/30 00:48:50
id:Sampo No.2

回答回数556ベストアンサー獲得回数104

ポイント20pt

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

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

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

id:quocard

ありがとうございます。

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

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

2007/01/30 00:49:10
id:tetsuyasodo No.3

回答回数11ベストアンサー獲得回数2

ポイント20pt

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

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

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

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

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

foreach($buff as $tmprow) {

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

echo $element[0];

}

id:quocard

ありがとうございます。

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

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

2007/01/30 00:49:44
id:SALINGER No.4

回答回数3454ベストアンサー獲得回数969

ポイント20pt

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

data.datを

a

b

c

にすれば

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

a

と出力されます。

id:quocard

ありがとうございます。

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

2007/01/30 00:49:55
id:kn1967 No.5

回答回数2915ベストアンサー獲得回数301

ポイント20pt

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

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

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

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

その次に

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

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

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

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

id:quocard

ありがとうございます。

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

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

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

2007/01/30 00:50:27

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません