2017-10-11 130 views
0

我有两个数组:打印纵向和横向的头

$array1 = array(1,2,3,4,7,6); 
$array2 = array(2,3,1,0,5); 

然后我试图创建printTable功能打印乘法表数组:

function printTable($array1, $array2) { 
    echo "<table border=1px>"; 
    foreach ($array2 as $vert_head) { 
    echo "<tr>"; 
    foreach ($array1 as $hor_head) { 
     echo "<td>". ($vert_head * $hor_head) ."</td>"; 
    } 
    echo "</tr>"; 
    } 
    echo "</table>"; 
} 

,然后打印表格:

$data = printTable($array1, $array2); 

它工作正常表是打印。但是,我怎样才能从数组中添加水平和垂直标题?

那我的表怎么看现在(只是答案):

2 | 4 | 6 | 8 | 14 | 12 | 
3 | 6 | 9 | 12 | 21 | 18 | 
1 | 2 | 3 | 4 | 7 | 6 | 
0 | 0 | 0 | 0 | 0 | 0 | 
5 | 10 | 15 | 20 | 35 | 30 | 

如何添加标题:

| | 1 | 2 | 3 | 4 | 7 | 6 | 
+---+---+----+----+----+----+----+ 
| 2 | 2 | 4 | 6 | 8 | 14 | 12 | 
| 3 | 3 | 6 | 9 | 12 | 21 | 18 | 
| 1 | 1 | 2 | 3 | 4 | 7 | 6 | 
| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 
| 5 | 5 | 10 | 15 | 20 | 35 | 30 | 

回答

0

我已经包含了代替修改代码的注释。它使用和额外的foreach循环来打印标题。

<?php 

$array1 = array(1,2,3,4,7,6); 
$array2 = array(2,3,1,0,5); 

function printTable($array1, $array2) { 
    echo "<table border=1px>"; 

    /* In our table first cell is empty. So put a blank cell here. */ 
    echo '<tr><td></td>' ; 

    /* Then print all headers in following cells */ 
    foreach($array1 as $head) { 
    echo '<th>' . $head . '</th>' ; 
    } 
    /* close the first row */ 
    echo '</tr>'; 

    foreach ($array2 as $vert_head) { 
    echo "<tr>"; 

    /* Before printing each row, print the left heading */ 
    echo '<td>' . $vert_head . '</td>' ; 

    foreach ($array1 as $hor_head) { 
     echo "<td>". ($vert_head * $hor_head) ."</td>"; 
    } 
    echo "</tr>"; 
    } 
    echo "</table>"; 
} 
+0

最简单的方法虽然这个代码片断可以解决这个问题,[包括说明](// meta.stackexchange.com/q/114762)确实有助于提高质量您的帖子。请记住,您将来会为读者回答问题,而这些人可能不知道您的代码建议的原因。 –

+0

@CodyGray修改了答案,并感谢您的建议。我确实犯了错误,我确实试图改善我在各个方面的问题和答案。 – tan

2

尝试以下操作:

<?php 
$array1 = array(1,2,3,4,7,6); 
$array2 = array(2,3,1,0,5); 
function printTable($array1, $array2) { 
    echo "<table border=1px>"; 
    echo "<thead><tr><td></td>"; 
    echo "<th>" . implode("</th><th>", $array1) . "</th>"; 
    echo "</tr></thead><tbody>"; 
    foreach ($array2 as $vert_head) { 
    echo "<tr>"; 
    foreach ($array1 as $hor_head) { 
     echo "<td>". ($vert_head * $hor_head) ."</td>"; 
    } 
    echo "</tr>"; 
    } 
    echo "</tbody></table>"; 
} 

printTable($array1, $array2); 

它使用implode()$array1转换为表标题

1

你也可以试试这种方式。这是与您现有的代码

$array1 = array(1,2,3,4,7,6); 
$array2 = array(2,3,1,0,5); 
function printTable($array1, $array2) { 
    echo "<table border='1px' style='text-align:right'>"; 
    echo '<tr><td></td>' ; 
    foreach($array1 as $head) { 
    echo '<td>' . $head . '</td>' ; 
    } 
    echo '</tr>'; 
    foreach ($array2 as $vert_head) { 
    echo "<tr>"; 
    echo '<td>' . $vert_head . '</td>' ; 
    foreach ($array1 as $hor_head) { 
     echo "<td>". ($vert_head * $hor_head) ."</td>"; 
    } 
    echo "</tr>"; 
    } 
    echo "</table>"; 
} 
$data = printTable($array1, $array2);