首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从数组更改表格布局

从数组更改表格布局
EN

Stack Overflow用户
提问于 2011-02-06 06:20:52
回答 1查看 200关注 0票数 0

我有以下数组:

代码语言:javascript
复制
$table = array(
    1 => array('2.1'=>3, '2.2'=>3, '2.3'=>3),
    2 => array('2.1'=>1, '2.2'=>1, '2.3'=>1),
    3 => array('2.1'=>2, '2.2'=>2, '2.3'=>2),
    4 => array('2.1'=>2, '2.2'=>2, '2.3'=>1),
    5 => null,
    6 => null,
    7 => array('2.1'=>2, '2.2'=>2, '2.3'=>2),
    8 => array('2.1'=>2, '2.2'=>2, '2.3'=>2),
    9 => array('2.1'=>2, '2.2'=>2, '2.3'=>2),
    10 => array('2.1'=>1, '2.2'=>1, '2.3'=>1),
    11 => array('2.1'=>3, '2.2'=>1, '2.3'=>1),
    12 => array('2.1'=>1),
    13 => array('2.1'=>5, '2.2'=>3, '2.3'=>2)
);

我正在复制这张表

代码语言:javascript
复制
Month   clicks  clicks2  clicks3
8       2       2        2
9       2       2        2
10      1       1        1
11      3       1        1
12      1               
13      5       3        2

它显示了每个月三个复选框的点击量。我需要像这样显示表格。

代码语言:javascript
复制
Month    8     9     10     11     12     13
Click    2     2      1      3      1      5
Clicks2  2     2      1      1             3
Clicks3  2     2      1      1             2

我真的有

代码语言:javascript
复制
$period =13; //last month

echo '<table><thead>';
echo '<tr><th>8</th><th>9</th><th>10</th><th>11</th><th>13</th></tr>';
echo '</thead>';
for ($i=$period-5; $i <= $period ;$i++){
    echo '<tr><th>'.$i.'</th>';
    foreach($table[$i] as $checkbox => $val )
    {
        echo '<td>'.$val.'</td>';   
    }
    echo '</tr>';
}
echo '</table>';

我已经挣扎了一整天没有看,这很可能是一个简单的解决方案。有人看到了吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-02-06 06:40:59

这对我来说很有效:

代码语言:javascript
复制
<?
$table = array(
    1 => array('2.1'=>3, '2.2'=>3, '2.3'=>3),
    2 => array('2.1'=>1, '2.2'=>1, '2.3'=>1),
    3 => array('2.1'=>2, '2.2'=>2, '2.3'=>2),
    4 => array('2.1'=>2, '2.2'=>2, '2.3'=>1),
    5 => null,
    6 => null,
    7 => array('2.1'=>2, '2.2'=>2, '2.3'=>2),
    8 => array('2.1'=>2, '2.2'=>2, '2.3'=>2),
    9 => array('2.1'=>2, '2.2'=>2, '2.3'=>2),
    10 => array('2.1'=>1, '2.2'=>1, '2.3'=>1),
    11 => array('2.1'=>3, '2.2'=>1, '2.3'=>1),
    12 => array('2.1'=>1),
    13 => array('2.1'=>5, '2.2'=>3, '2.3'=>2)
);

$checkboxes = array();
foreach($table as $monthtable) {
    foreach($monthtable as $checkbox=>$clicks) {
        if(in_array($checkbox, $checkboxes)) {
            continue;
        }
        else {
            $checkboxes[] = $checkbox;
        }
    }
}

// now we have $checkboxes containing 2.1, 2.2, 2.3, our rows.
?>
<table>
    <tr>
        <th>Month</th>
        <? foreach($table as $month=>$monthtable) {
            echo '<th>'.$month.'</th>';
        } ?>
    </tr>
    <? foreach($checkboxes as $checkbox) {
        echo '<tr>'
            . '<th>'.$checkbox.'</th>';

        // assuming this is still in the same order as the last loop.
        foreach($table as $monthtable) {
            echo '<td>';
            if(array_key_exists($checkbox, $monthtable)) {
                echo $monthtable[$checkbox];
            }
            else {
                echo '0';
            }
            echo '</td>';
        }

        echo '</tr>';
    } ?>
</table>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4910081

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档