質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

3回答

1890閲覧

PHPでソートしたCSVを表として出力したい

退会済みユーザー

退会済みユーザー

総合スコア0

CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2016/10/08 08:00

編集2016/10/08 08:30

###前提・実現したいこと
PHPでCSVにアンケート結果を記録しています.データ形式は

部長,12,20
課長,14,17
社長,11,14
課長,13,20
課長,4,16
部長,3,11

のようになっています.以下,便宜上左から順に「役職」「A値」「B値」と呼称させていただきます.レコードはせいぜい100件程度です.

###発生している問題・エラーメッセージ
役職ごとの「A値の合計」と「B値の合計」と「A値/B値」を出力ししておりA値/B値でソートしています

したがって

役職 A B A/B
社長 11 14 0.78
課長 31 53 0.58
部長 15 31 0.48

と表示されます.

これを,<table>の形式にしたいと考えています.

theadまで手を付けましたが,PHPの部分で手詰まりを起こしています

###該当のソースコード

HTML

1 <table> 2 <thead> 3 <tr> 4 <th>役職</th> 5 <th>A値</th> 6 <th>B値</th> 7 <th>A/B</th> 8 9 <?php 10 error_reporting(E_ALL & ~E_NOTICE); 11 $data = file("data.csv"); 12 13 for ($i = 0; $i < sizeof($data); $i++) { 14 $line = explode(",", $data[$i]); 15 $valueA[$line[0]] += $line[1]; 16 $valueB[$line[0]] += $line[2]; 17 } 18 foreach ($valueA as $key => $value) { 19 $valA = $value; 20 $valB = $valueB[$key]; 21 $ratio[$key] = $valA / $valB; 22 } 23 ?> 24 25 <?php 26 arsort($ratio); 27 foreach ($ratio as $key => $value) { 28 echo $key . " " . $valueA[$key] . " " . $valueB[$key] . " " . round($ratio[$key] , 2) . "</br>"; 29 } 30 ?> 31 </table>

###補足

本丸は

echo $key . " " . $valueA[$key] . " " . $valueB[$key] . " " . round($ratio[$key] , 2) . "</br>";

上記の部分です.

echoの中にタグは書けないので困っています.まだ本を片手に勉強中なので,詳しい方から見たらイッシュンだともうのですが……何卒よろしくお願いします.

###追記
以下のようにしてみましたが,500が帰ってきます.なんででしょうか?

PHP

1 <?php 2 arsort($ratio); 3 foreach ($ratio as $key => $value) { 4 echo 5 <tr> 6 <td>$key</td> 7 <td>$valueA[$key]</td> 8 <td>$valueB[$key]</td> 9 <td>round($ratio[$key] , 2)</td> 10 </tr> 11 ; 12 } 13 echo $key 14 ?>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ベストアンサー

echoの中にタグは書けないので困っています

書けますよ。
PHPの基礎の基礎|PHP工房
PHPで文字列をHTMLに出力するいくつかの方法

投稿2016/10/08 08:15

toutou

総合スコア2050

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2016/10/08 08:32

自分で少しやってみたのですが,上手く行きませんでした.もしお時間がございましたら,もう少々お付き合い頂ければ幸いです.
toutou

2016/10/08 08:46

<td>$key</td>は "<td>".$key."</td>"か”<td>{$key}</td>”じゃないかな
guest

0

クォーテーションの使い方がいまいち理解できていなかったのですが,皆様方の解答で,わかってまいりました.

結果として,

PHP

1 <?php 2 arsort($ratio); 3 foreach ($ratio as $key => $value) { 4 echo 5 '<tr> 6 <td>'.$key.'</td> 7 <td>'.$valueA[$key].'</td> 8 <td>'.$valueB[$key].'</td> 9 <td>'.round($ratio[$key] , 2).'</td> 10 </tr>' 11 ; 12 } 13 ?>

となりました.

投稿2016/10/08 08:53

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

追記の最後の

php

1echo $key

でセミコロン抜けてませんか?

投稿2016/10/08 08:34

m45r40w

総合スコア29

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問