![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?c9bd177)
いつもお世話になります。
readtest.csvというCSVファイルを作り、データを次のように入れています。
a,apple,301,23
b,orange,518,47
c,grape,278,19
d,banana,189,36
この3列目のデータを取り出して1次元配列に入れるため、DBtest.phpを次のように書きました。
01: <?php
02: $Data=file("../readtest.txt");
03: for ( $i = 0; $i < sizeof( $Data ); $i++ ) {
04: $line=explode(",",$Data[$i]);
05: echo $line[2]; // 301518278189
06: // $xdata=implode(",", $line[2]);
07: }
08: ?>
この実行結果は、「301518278189」となります。なぜコンマが入らないのでしょうか?
5行目をコメントアウトして6行目を生かして実行すると、
Warning: implode() [function.implode]: Bad arguments. in C:\Program Files\Apache Group\Apache2\htdocs\DBtest.php on line 6
となります。
3列目のデータを抜き出して配列を作るにはどのようにすれば良いでしょうか?
よろしくご教示頂ければ幸いです。
No.2ベストアンサー
- 回答日時:
// fileを$Dataに格納
$Data=file("../readtest.txt");
for ( $i = 0; $i < sizeof( $Data ); $i++ ) {
// $i行目のデータをカンマで区切り$lineに格納
$line=explode(",",$Data[$i]);
// $lineの3番目のデータをecho
echo $line[2];
// ←? $lineの3番目のデータをカンマで結合しようとしてる
$xdata=implode(",", $line[2]);
}
$line[2]は当然「配列ではない」のでimplodeで結合しようとしても空振りに終わるだけです。
Bad argmentsと怒られているのはそのせいです。
おそらくやりたいこととしては
// $buffer: 取っておきたい3番目のデータを一時的に格納するバッファ
$buffer = array();
$Data=file("../readtest.txt");
for ( $i = 0; $i < sizeof( $Data ); $i++ ) {
$line=explode(",",$Data[$i]);
$buffer[] = $line[2];
}
echo implode(',',$buffer);
こういうことなのかなぁと。
> $line[2]は当然「配列ではない」ので
なるほど、そういうことですか・・・・・。
バッファを使った上のやり方で、将にやりたい結果を確認することができました。
しかし、私にとっては少し内容が高度なので、もう少し勉強します。
ありがとうございました。
No.1
- 回答日時:
<?php
/*
>この実行結果は、「301518278189」となります。なぜコンマが入らないのでしょうか?
コードどおりなので,何を悩んでいるのか回答者としては良く理解できない。
言っておくけど,一回のechoで表示された内容じゃないからね。
echo $line[2] . "\n";
とかやってみればわかると思うけど。
で,さらに何のためにimplode関数を使おうとしているのか良く解らん。
*/
$array = array();
/* ファイル名が説明文と一致しないので修正 */
$Data=file("./readtest.csv");
for ( $i = 0; $i < sizeof( $Data ); $i++ ) {
$line=explode(",",$Data[$i]);
array_push($array,$line[2]) ;
}
print_r($array);
?>
> echo $line[2] . "\n";
> とかやってみればわかると思うけど。
をやってみましたら、(縦に並ぶと思ったところ)、案に相違して「301 518 278 189」と半角スペースが空きました。
> 一回のechoで表示された内容じゃないからね。
は、分かっているのですが、なぜコンマがつかないのかが感覚的に理解できないでいます。
もう一度よく突っ込んで勉強することにします。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# pythonのファイルの並びでの読み込みとリストについて 4 2022/04/13 03:52
- PHP htmlで複数の個数入力欄を表示させるには 1 2022/09/20 03:11
- Visual Basic(VBA) 列と行の名前(重複あり)が交差するセルに、データを入力したい 2 2022/06/25 22:42
- Visual Basic(VBA) 列と行の名前(重複あり)が交差するセルに、データを入力したい 3 2022/06/12 11:17
- その他(プログラミング・Web制作) Pythonで、データファイルと列名ファイルを1つのファイルにしたいです。 1 2023/07/27 20:29
- PHP ファイルの書き込みについて教えて下さい。 1 2023/03/20 12:01
- Microsoft ASP プログラミング関係で質問です。 3 2022/10/11 16:06
- Excel(エクセル) 【困っています】VBA 追加処理の記述を教えてください。 1 2022/08/25 22:54
- C言語・C++・C# c言語の問題です 課題1 (二分探索木とセット) 大きさ size の配列 array を考える。す 2 2023/01/10 21:08
- PHP PHPでユーザー情報を入力して簡易ログイン機能をつくってみたのですが 1 2023/05/29 08:51
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C言語でCSVファイルの行数を読...
-
CSVに追加データを挿入したいで...
-
別ファイルの構造体の値を読み...
-
Resource id #3 と表示されま...
-
文字列の文字一文字ずつを解析...
-
csvの内容を行単位で削除したい
-
出力結果がないときの処理方法
-
array_randを使って複数表示
-
$_SESSIONに二次元配列を使える...
-
file_existsでファイル名の部分...
-
プルダウンメニューにDBの内容...
-
phpとmysqlで「あいまい検索」...
-
ショッピングカートで$_SESSION...
-
配列内の値を分解して再格納
-
PHPにてクラスを配列にすること...
-
sqlのデーターを『あ行』『か行...
-
更新されたhtmlのタイトルを表...
-
STLのvectorで作った配列をメン...
-
配列の並べ替え
-
禁止ワード設定
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
別ファイルの構造体の値を読み...
-
複数行のデータのPOST処理に関して
-
エラーメッセージ(無効な間接...
-
Resource id #3 と表示されま...
-
ヒアドキュメントの中のfor文
-
自動で番号を振りたい
-
C言語でCSVファイルの行数を読...
-
配列同士の足し算のループ処理
-
stdClass Objectを連想配列のよ...
-
PHPでCSVの一部の行を編集したい
-
phpを実行するとファイルダウン...
-
行数が30万件ほどあるCSVから、...
-
phpでCSVファイルの中身を多次...
-
php Undefined variableエラー
-
CSVデータの行数カウントをした...
-
csvの内容を行単位で削除したい
-
複数ファイルで、それぞれの行...
-
テキストデータから指定行の削除
-
rubyで複数列のデータを一行に...
-
PHP5でCSVの指定行データだけを...
おすすめ情報