使用键和值从数组创建垂直表

时间:2015-10-05 03:19:27

标签: php arrays

所以,例如我有以下数组:

array(
    'q1'=>array(1, 2, 5, 6, 2),
    'q2'=>array(1, 2, 5, 6, 2)
);
从该数组

,我想创建一个看起来像:

的垂直html表
+----+----+
| q1 | q2 |
+----+----+
| 1  | 1  |
| 2  | 2  |
| .. | .. |
| 2  | 2  |
+----+----+

如何实现这一目标?我坚持简单的foreach()

$html = '<table>';
foreach($data as $header=>$cell){
    $html .= '<td>'.$header.'</td>';
    foreach($cell as $row){
        $html .= '<tr><td>'.$row->value.'</td></tr>';
    }
}
$html .= '</table>';

3 个答案:

答案 0 :(得分:0)

如果$ data是q1和q2的数组,那么

$html = '<table>';

$html .= '<tr><td>q1</td><td>q2</td></tr>';

foreach($data['q1'] as $index => $record){
    $html .= '<tr>';
    $html .= '<td>'.$record.'</td>';
    $html .= '<td>'.$data['q2'][$index].'</td>';
    $html .= '</tr>';
}
$html .= '</table>';

答案 1 :(得分:0)

我自己解决了。这是解决方案

$html = '<table>';
        $html .= '<tr>';
        foreach($data as $key=>$cell){
            $html .= '<td>'.$key.'</td>';
        }
        $html .= '</tr>';

        $first = reset($data);
        for($i = 0; $i < count($first); $i++){
            $html .= '<tr>';
            foreach($data as $d){
                $html .= '<td>'.$d[$i]->value.'</td>';
            }
            $html .= '</tr>';
        }
        $html .= '</table>';

答案 2 :(得分:0)

检查以下代码。希望它适合你。

<?php
$data =array(
    'q1'=>array(1, 2, 5, 6, 2),
    'q2'=>array(1, 2, 5, 6, 2),
    'q3'=>array(1, 2, 5, 6, 2),
    'q4'=>array(1, 2, 5, 6, 2)
);
$html = '<table>';
 $html.='<tr>';
 $main_keys =array_keys($data);
 foreach($data  as $key=>$v)
 {
    $html.='<tr>';
    foreach($main_keys as $k)
    {
     $html.='<td>'.$k.'</td>';
    }
    $html.='</tr>';
    for($i=0;$i<count($v);$i++)
    {
         $html.='<tr>';
        foreach($main_keys as $k)
        {
         $html.='<td>'.$data[$k][$i].'</td>';
        }
        $html.='</tr>';
    }
    break;
 }

$html .= '</table>';
?>