Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/230.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从具有键和值的数组创建垂直表_Php_Arrays - Fatal编程技术网

Php 从具有键和值的数组创建垂直表

Php 从具有键和值的数组创建垂直表,php,arrays,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 | +----+----+ 如何实现这一目标?我坚持使用simpleforeach() $html=

例如,我有以下数组:

array(
    'q1'=>array(1, 2, 5, 6, 2),
    'q2'=>array(1, 2, 5, 6, 2)
);
从该数组中,我想创建一个垂直html表,如下所示:

+----+----+
| q1 | q2 |
+----+----+
| 1  | 1  |
| 2  | 2  |
| .. | .. |
| 2  | 2  |
+----+----+
如何实现这一目标?我坚持使用simple
foreach()

$html='';
foreach($header=>$cell形式的数据){
$html.=''.$header';
foreach($单元格作为$行){
$html.=''.$row->value';
}
}
$html.='';

如果$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>';
$html='';
$html.='q1q2';
foreach($data['q1']作为$index=>$record){
$html.='';
$html.=''.$record';
$html.=''.$data['q2'][$index].';
$html.='';
}
$html.='';

我自己解决了。这是解决办法

$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>';
$html='';
$html.='';
foreach($key=>$cell形式的数据){
$html.=''.$key.';
}
$html.='';
$first=重置($data);
对于($i=0;$i值';
}
$html.='';
}
$html.='';

检查下面的代码。希望它对您有用

<?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>';
?>


你能打印($data)吗?@aldrin27:这是来自Yii查询的标准对象。构建标题,然后遍历行。q1和q2只是一个示例,实际上标题可以是不同的,超过两个不同名称的标题。
<?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>';
?>