请帮我遍历数组。
当我在命令行上运行 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”]=>字符串(5)“黛西”[“2013-04-03”]=>字符串(6)“米奇”}[1]=>数组(4 ) { ["startt"]=> string(8) "12:00:00" ["2013-04-01"]=> string(5) "Pluto" ["2013-04-02"]=> string (5) "高飞" ["2013-04-03"]=> 字符串(6) "米妮" } [2]=> 数组(4) { ["startt"]=> 字符串(8) "14:00 :00" ["2013-04-01"]=> NULL ["2013-04-02"]=> 字符串(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 阵列