垂直填充多维数组的HTML表

时间:2015-07-24 21:32:49

标签: php mysql arrays multidimensional-array

我有一个多维数组,里面有x个数组。每个内部数组都有30个值。我需要做的是在列中垂直打印每个数组的值作为表行,然后为每个数组创建一个新列。

我的数组看起来像这样

Array ( 
[0] => Array ( [0] => 0.00 [1] => 0.00 [2] => 0.00 etc...) 

[1] => Array ( [0] => 0.00 [1] => 0.00 [2] => 0.00 etc... ) 

[2] => Array ( [0] => 0.00 [1] => 0.00 [2] => etc... ) 

[3] => Array ( [0] => 0.00 [1] => 0.00 [2] => 0.00 etc...) )

我需要表格看起来像这样

  Column 1 "array 0"   | Column 2 "array 1"    | Column 3 "array 2"  

array [0]([1]=> value  | array [1]([1]=> value | array [2]([1]=> value  
array [0]([2]=> value  | array [1]([2]=> value | array [2]([3]=> value   
array [0]([3]=> value  | array [1]([3]=> value | array [2]([3]=> value   
etc....

我尝试了不同的foreach循环,但无法获得我正在寻找的结果。

以下是我目前使用的代码,但失败了。

foreach($pension as $key){
        echo "<tr>";
        foreach($key as $value){
            echo "<td>$value</td>";

        }
    echo "</tr>";
    }

水平打印数据会更容易,但我知道必须有一个解决方案。任何帮助都会很棒!

5 个答案:

答案 0 :(得分:2)

在尝试输出数组之前,最好重新构建数组。这样的事情应该有效:

$output = array();
foreach ($pension as $a) {
    foreach ($a as $key => $value) {
        $output[$key][] = $value; 
    }
}

然后输出:

foreach ($output as $o) {
    echo '<tr><td>' . implode('</td><td>', $o) . '</td></tr>';
}

Here's an example

答案 1 :(得分:0)

您可以转置数组(因此列成为行,反之亦然),然后打印数据应该是微不足道的。不幸的是,PHP没有附带转置功能,所以你需要编写自己的(or use this one)。

答案 2 :(得分:0)

排序丑陋但这很有效。嵌套表。 live here

<?php
$foo = [1 => ['1-1', '1-2', '1-3'],
        2 => ['2-1', '2-2', '2-3', '2-4', '2-5'],
        3 => ['3-1', '3-2', '3-3', '3-4'],
        4 => ['4-1', '4-2',]
       ];
?>

<table>
    <tr style="vertical-align:top;">
        <?php foreach ($foo as $col): ?>
        <td>
            <table>
                <?php foreach ($col as $cell): ?>
                <tr>
                    <td>
                        <?= $cell ?>
                    </td>
                </tr>
                <?php endforeach; ?>
            </table>
        </td>
        <?php endforeach; ?>
    </tr>
</table>

答案 3 :(得分:0)

我还没有对此进行过测试,但我认为这应该可行。这假设每个数组中总有30个值。

for ($i = 0 ; $i < 30 ; $i++) {
    echo '<tr>';

    foreach ($pension as $array) {
        echo "<td>{$array[$i]}</td>";
    }

    echo '</tr>';
}

答案 4 :(得分:0)

这也有效。使用array_columns,您可以从每个数组中提取值并将其粘贴到一个新数组中,然后使用for循环遍历它们并将它们打印出来。

$zeroColumn = array_column($array, 0);
$oneColumn = array_column($array, 1);
$twoColumn = array_column($array, 2);

$count = count($zeroColumn);

for ($i=0; $i<$count; $i++) {
    echo $zeroColumn[$i] . " | " . $oneColumn[$i] . " | " . $twoColumn[$i] . "</br>";
}