我有一个多维数组,里面有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>";
}
水平打印数据会更容易,但我知道必须有一个解决方案。任何帮助都会很棒!
答案 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>';
}
答案 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>";
}