実現したいこと
-POSTされたスタッフコードと一致するコードのスタッフを抽出して表示したい
-csv形式のログファイルを配列に読み込んで、該当するスタッフコードの部分だけ切り出したい(それができない)。
-そのために、まずcsv形式のログファイルを読み込んで、POSTされたスタッフコード一致するデータを抽出したい
-file関数で読みこみ、explodeで列を分割するが、要素を取り出すと、列の1文字目だけになってしまう。
前提
PHPです
発生している問題・エラーメッセージ
1行を、explodeでタブ区切りで、さらに配列にしないといけないと思い、それはしました。
これで多次元配列になったつもりですが、
$cols[1][0]とるとエラーが出て、
$col[0]だと、列の項目の1文字目しか表示されません。
1文字目ごと区切りの配列にまでなってるのでしょうか?
該当のソースコード
line.txt ログファイル
1 tab区切り (1行目は、列の見出しにしてる) 2num name pass 33 taro 123 42 hanako 333 51 yuji 555 6 7```PHP staff.edit 8//ログを読み込む 9//ファイルを配列に読み込み 10$lines = file('../line.txt'); 11 12/////////////////////////////////////// 13//指定された番号と、同じ番号のスタッフの名前を取り出す。 14//しかし、行や列から、番号だけ取り出す方法がわからない。 15foreach ( $lines as $key => $line ) { 16 $cols=explode("\t",$line); 17 echo "<pre>"; 18 foreach ( $cols as $col ) { 19 20 //これだと、1行すべて表示される 21 echo $col.", "; 22 23 //なぜこれで、項目の1つではなく、各列の一文字目だけになる? 24 echo $col[0].", "; 25 }//foreach 26echo "</pre>"; 27 28}//foreach
試したこと
始め、ファイルを読み込んだだけで2次元配列になったと思ってましたが
1行ずつは、文字列だったので、explodeでtabでさらに配列にしました。
これで2次元配列になってるつもりです。
ところが、そこから特定の列を取り出そうとすると、
$cols[1][0]とるとエラー。
しかも、$col[0]だと、列の項目の1文字目しか表示されません。
これが一番不思議です。
1文字目ごと区切りの配列にまでなってるのでしょうか?