用多维数组垂直填充HTML表



我有一个多维数组,里面有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>";
    }

水平打印数据会更容易,但我知道一定有解决方案。任何帮助都太好了!

您最好在尝试输出它之前重构您的数组。像这样的代码应该可以工作:

$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>';
}

这里有一个例子

有点难看,但这是可行的。嵌套表。住在这里。

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

我还没有测试过,但我认为这应该可以工作。这里假设每个数组中总是有30个值。

for ($i = 0 ; $i < 30 ; $i++) {
    echo '<tr>';
    foreach ($pension as $array) {
        echo "<td>{$array[$i]}</td>";
    }
    echo '</tr>';
}

这个也可以。使用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>";
}

可以对数组进行转置(使列变为行,反之亦然),然后打印数据应该很简单。不幸的是,PHP没有附带转置函数,因此您需要自己编写(或使用此函数)。

相关内容

  • 没有找到相关文章