如何在php中为打印的2d数组生成标题?
所以我的数组看起来像这样:
$tab=array(
array(0,1,2,3),
array(1,2,3,4),
array(2,3,4,5)
)
此代码:
foreach ($tab as $key => $row){
echo '<b>o<sub>'.($key+1).'</sub></b> ';
foreach ($row as $item) {
echo $item.' ';
}
echo '<br>';
}
打印此:
o 1 0 1 2 3
o 2 1 2 3 4
o 3 2 3 4 5
但我需要这个:
a 1 a 2 a 3 d
o 1 0 1 2 3
o 2 1 2 3 4
o 3 2 3 4 5
行的长度可能不同,最后一列必须 d
感谢您的帮助
答案 0 :(得分:3)
您可以检查这是否是第一个foreach中的第一个迭代,如果是,则添加第一行。
foreach ($tab as $key => $row) {
// If first iteration, add the header
if ($key === 0)
{
foreach ($row as $i => $item)
{
// Last header must be 'd'
if ($i === count($row) - 1)
echo '<b>d</b>';
else
echo '<b>a<sub>' . ($i + 1) . '</sub></b> ';
}
echo '<br />';
}
// Add the current row
echo '<b>o<sub>' . ($key + 1) . '</sub></b> ';
foreach ($row as $item) {
echo $item . ' ';
}
echo '<br />';
}
答案 1 :(得分:0)
如果第一行是静态行,那么您可以先使用echo
函数进行打印。
但如果它也是动态标签,那么您可以使用以下代码:
$count = count($tab[0]);
for($i = 1; $i <= $count; $i++)
{
if($i != $count) echo '<b>a<sub>' . ($i + 1) . '</sub></b> ';
else echo '<b>d</b> ';
}
foreach ($tab as $key => $row){
echo '<b>o<sub>'.($key+1).'</sub></b> ';
foreach ($row as $item) {
echo $item.' ';
}
echo '<br>';
}
答案 2 :(得分:0)
您可以尝试使用此功能,但使用<table>
或<div>
来对齐您的元素。
foreach ($tab[0] as $key => $item)
echo $key === 0 ? title(' ', ' ') : title('a', $key);
echo title('d', '') . '<br>';
function title(string $letter, string $index)
{
return "<b>{$letter}<sub>{$index}</sub></b>";
}