我有一个多维数组,里面有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没有附带转置函数,因此您需要自己编写(或使用此函数)。