配列を反復処理するのを手伝ってください。
私の mysql ストアド プロシージャをコマンド ラインで実行すると、次の出力が返されます。
mysql> call sp_test();
+----------+------------+------------+------------+
| startt | 2013-04-01 | 2013-04-02 | 2013-04-03 |
+----------+------------+------------+------------+
| 08:00:00 | Donald | Daisy | Mickey |
| 12:00:00 | Pluto | Goofy | Minnie |
| 14:00:00 | NULL | Mickey | NULL |
+----------+------------+------------+------------+
3 rows in set (0.00 sec)
(これは動的クエリです。列見出しの日付値は静的ではありません。)
このストアド プロシージャを php から呼び出して、配列にデータを正常に取り込むことができます。
6 <?php
7 $db = new mysqli('localhost', 'root', 'password', 'db');
8 $sql = "CALL sp_test()";
9 $query = $db->query($sql);
10 $result = array();
11 while ($row = $query->fetch_assoc()) {
12 $result[] = $row;
13 }
14 $query->close();
15 $db->close();
配列の内容: array(3) { [0]=> array(4) { ["startt"]=> string(8) "08:00:00" ["2013-04-01"]=> string( 6) "ドナルド" ["2013-04-02"]=> string(5) "デイジー" ["2013-04-03"]=> string(6) "ミッキー" } [1]=> array(4 ) { ["startt"]=> string(8) "12:00:00" ["2013-04-01"]=> string(5) "冥王星" ["2013-04-02"]=> string (5) "グーフィー" ["2013-04-03"]=> string(6) "ミニー" } [2]=> array(4) { ["startt"]=> string(8) "14:00 :00" ["2013-04-01"]=> NULL ["2013-04-02"]=> string(6) "ミッキー" ["2013-04-03"]=> NULL } }
私の問題は、配列を (php を使用して) 反復処理して結果を表示しようとしたときに始まります。
配列を反復処理し、コマンド ラインの結果に相当する html を生成する「ループ」を提案していただけますか (この投稿の上部に示されています)。
私は次のことを試しましたが、それは私が望んでいたこととまったく同じではありませんでした。その後、完全に混乱しました。お役に立てれば幸いです。
17 echo "<table>";
18 foreach ($result as $value) {
19 foreach ($value as $key => $data) {
20 echo "<tr>";
21 echo "<td>" . $key . "</td>";
22 echo "<td>" . $value . "</td>";
23 echo "</tr>";
24 }
25 echo "\n";
26 }
27 echo "</table>";
28 //var_dump($query);
29 ?>
これからの出力は次のとおりです。
開始配列
2013-04-01 アレイ
2013-04-02 アレイ
2013-04-03 アレイ
開始配列
2013-04-01 アレイ
2013-04-02 アレイ
2013-04-03 アレイ
開始配列
2013-04-01 アレイ
2013-04-02 アレイ
2013-04-03 アレイ