
初歩的な質問で恐縮です。
2次元配列形式で作った CSVファイル moromoro.txtがあります。
<?php
$CsvData = fopen("./moromoro.txt","r");
$line=fgetcsv($CsvData,50,"\t");
print_r($line);
?>
としてブラウザでみると
Array ( [0] => abcd,efgh,kimn,qrst,uvwx) とデータが入ります。ところが、データを取り出すため、
以下の通り4行目を追加しブラウザで見ても白いページだけになります。
01: <?php
02: $CsvData = fopen("./moromoro.txt","r");
03: $line=fgetcsv($CsvData,50,"\t");
04: list($aaa,$bbb)=$line;
05: return $aaa;
06: print_r($aaa);
076: ?>
----------
4行目以下を次のように変更しても
04: $ccc[]=$line[2];
05: print_r($ccc);
06: ?>
Array ( [0] => ) とだけが出てデータの取得が出来ません。何故でしょうか?
どうすれば、配列n番目のデータを取り出すことができるでしょうか?
A 回答 (6件)
- 最新から表示
- 回答順に表示
No.6
- 回答日時:
こんにちわ♪
$line =
Array ( [0] => abcd [1] => efgh [2] => kimn [3] => qrst [4] => uvwx );
であれば
06: $ccc[]=$line[0][2];
↓↓↓↓↓↓↓↓↓↓↓↓
06: $ccc[]=$line[2];
でどうでしょう?
print_rのcは$line[0] = array(0=>a,1=>b,2=>c,3=>d);
の[2]のcだと思います。
補足としては
$line = abcd;
これは
$line[0] = a;
$line[1] = b;
$line[2] = c;
$line[3] = d;
と同じことなので。
ありがとうございます。
06: //print_r($line);
07: //$ccc[]=$CsvData[0][2];
08: $ccc[]=$CsvData[2];
09: print_r($ccc);
10: ?>
としてブラウザで見ると、
06行目の出力結果
Array ( [0] => abcd [1] => efgh [2] => kimn [3] => qrst [4] => uvwx )
となりますが、
07行目の出力結果は
Array ( [0] => 0 ) となり、
08行目の出力結果は
Array ( [0] => a,b,c,d ) となってしまいます・・・・・・。
No.5
- 回答日時:
こんにちわ♪
01: <?php
02: $CsvData = fopen("./moromoro.txt","r");
03: $line=fgetcsv($CsvData,50,"\t");
04:
05:
06:
076: ?>
----------
04: $ccc[]=$line[0][2];
05: print_r($ccc);
06: ?>
でどうでしょう?
#1,#2,#5様ありがとうございます。気合を入れ直して再度Tryし直しています。お陰さまでexplodeは出来ました。
01: <?php
02: $CsvData=fopen("./moromoro.csv","r");
03: $line = explode(",",$CsvData[0]);
04: print_r($line); ←まず、このままだと、
05: // print_r($line[0][2]);
06: ?>
4行目を生かしたとき
Array ( [0] => abcd [1] => efgh [2] => kimn [3] => qrst [4] => uvwx ) となります。
ところが、5行目を生かすと、
‘c’ と頭から3番目のデータが出て、予定する’kimn’ が取得できないのです。
#5様の回答を参考に 4,5行目をコメントアウトし、6,7行を次のように挿入すると、
06: $ccc[]=$line[0][2];
07: print_r($ccc);
08: ?>
やはり、 Array ( [0] => c ) となるだけなのです・・・・。explodeが効いていない?
#1様の回答番号No3の事情だと推定するのですが、解決法が分かりません。
どうすればクリアできるでしょうか。
No.3
- 回答日時:
#1です
explode()の第2引数が関数定義と異なります。
PHPの配列は連想マップで実装されていますから配列の先頭と配列の先頭要素の指すデータの先頭は異なります。また一般にXとXの配列は別物です。

No.1
- 回答日時:
>Array ( [0] => abcd,efgh,kimn,qrst,uvwx)
これは配列の0番目に文字列"abcd,efgh,kimn,qrst,uvwx"が入っているという意味ですから$line[2]は存在しません。
explode()で展開しましょう。
参考URL:http://jp2.php.net/manual/ja/function.explode.php
ありがとうございます。下記のように explode() で試してみました。
01: <?php
02: $CsvData = fopen("./moromoro.txt","r");
03: $line=fgetcsv($CsvData,50,"\t");
04: $pieces = explode(" ",$line);
05: //print_r($line);
06: //print_r($pieces[2]);
07: echo $pieces[2];
08: ?>
5行目を生かすと、
Array ( [0] => abcd,efgh,kimn,qrst,uvwx) と出ます。
ところが、6行目または7行目を生かすと、(マニュアルの例示の通りやっているつもりなのですが)、いずれの場合も白いページしか出ないのです。どこが悪いのでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- UNIX・Linux Linuxについて質問です。 以下のhistoryの出力結果から、sedコマンドのファイル名tmp1 1 2023/02/03 20:11
- PHP 配列の値の更新方法について 1 2022/08/05 09:49
- PHP PHPでCSVを出力するさいに、ループの中で前の行の値を変更したい 3 2022/10/27 17:44
- C言語・C++・C# C言語初心者 ポインタについて、お助けください、、 2 2023/03/15 23:50
- PHP PHP ページング データベース 1 2022/06/16 10:30
- Perl perl このテキストファイルを簡単に配列に入れるには? 2 2022/04/27 20:24
- PHP htmlで複数の個数入力欄を表示させるには 1 2022/09/20 03:11
- Microsoft ASP プログラミング関係で質問です。 3 2022/10/11 16:06
- PHP PHPでCSVを出力するさいに、ループの中で前の行の値を変更したい 1 2022/10/27 14:21
- PHP ファイルの書き込みについて教えて下さい。 1 2023/03/20 12:01
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
配列をループでたくさん宣言し...
-
配列どうしで同じ値があれば取...
-
Windowspowershellの変数について
-
ネストが深い時のforeachはどう...
-
Smartyのテンプレートからjavas...
-
(/)以降を取得する
-
配列をmysqlに保存
-
配列の書き方
-
3次元配列を2次元配列にする方...
-
読み込んだデーターを10件づつ...
-
CSVでランキング作成
-
CSVファイルの10件表示について
-
配列の値の更新方法について
-
配列を回すとき、最後の要素だ...
-
foreachのなかで次のキーを参照...
-
$_SESSIONの中身の取り出し方
-
連想配列のprint_rやvar_dump出...
-
PHPにてクラスを配列にすること...
-
ExcelVBAのチェックボックスに...
-
DBを使用しないで「○件リスト表...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
配列をループでたくさん宣言し...
-
$_SESSIONに二次元配列を使える...
-
foreachのなかで次のキーを参照...
-
file_existsでファイル名の部分...
-
PHPにてクラスを配列にすること...
-
String だと「 ByRef引数の型が...
-
ネストが深い時のforeachはどう...
-
postgresql関数をつかったレコ...
-
PHPでの簡易ビンゴゲームでの疑...
-
PHPのカッコ[ ]の使い方について
-
sortableで並べ替えてDBに保...
-
漢字のソートについて
-
プルダウンメニューでCSVデータ...
-
チェックボックス複数選択 mys...
-
PHPで配列をPOSTデータで送った...
-
URLのサブドメインとドメイン部...
-
PHP 配列の添字に変数は使えない?
-
チェックボックスが複数選択で...
-
PHP 多次元配列変数のデータ受...
-
SQL文の実行結果を変数で受けて...
おすすめ情報