如何用标题打印2d php数组

时间:2017-04-20 14:16:27

标签: php multidimensional-array

如何在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

感谢您的帮助

3 个答案:

答案 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('&nbsp;&nbsp;', '&nbsp;') : title('a', $key);

echo title('d', '') . '<br>';

function title(string $letter, string $index)
{
    return "<b>{$letter}<sub>{$index}</sub></b>";
}