TCPDF - 以两列布局循环数据
TCPDF - loop data in two columns layout
我正在使用 TCPDF,目前我使用 array_chunk
在两列中列出数据,效果很好。但我需要数据显示在第一列,然后是第二列,见下文:
Currently:
1 2
3 4
5 6
7 8
9 10
Should be:
1 6
2 7
3 8
4 9
5 10
这是代码:
<?php $array = range(1, 50);?>
<table nobr="true" cellpadding="2">
<?php foreach (array_chunk($array, 2) as $a) { ?>
<tr>
<?php foreach ($a as $array_chunk) { ?>
<td><?php echo $array_chunk; ?></td>
<?php
} ?>
</tr>
<?php } ?>
</table>
我的第二个查询(复杂)如果超过 30 行我需要能够使用 $pdf->AddPage();并在下一页继续。
我有一段时间没有使用 PHP,所以我会让您编写代码,但希望这能帮助您解决问题。
我认为你的秒数问题是最简单的一个:每页只能有 30 行。由于每行有 2 个项目,这意味着每页有 60 个项目。所以简单地将你的数组分成每个数组 60 个项目的数组,就像这样,在伪代码中:
items = [1, 2, 3, ...] // an array of items
pages = []
i = 0
while 60 * i < items.length
pages[i] = items.slice(i * 60, (i + 1) * 60)
i = i + 1
第二个问题是这样的:您想要按列创建输出列,但是 HTML 要求您按行输出它。所以,在我们输出行之前,我们必须知道我们总共要输出多少行:
items = [1, 2, 3, ...] // an array of items
rows = items.length / 2 // The number of rows, make sure you round this right in PHP
n = 0
while n < rows
// The n:th item of the first column
print items[n]
// the n:th item of the second column
print items[rows + n]
print "\n"
n = n + 1
在您的代码中,您可能需要检查项目 [行 + i] 是否存在等。还要确保奇数的舍入符合您的预期。
TCPDF - 支持多列,这是我用来解决问题的方法:
$pdf->AddPage();
$pdf->resetColumns();
$pdf->setEqualColumns(2, 84); // KEY PART - number of cols and width
$pdf->selectColumn();
$content =' loop content here';
$pdf->writeHTML($content, true, false, true, false);
$pdf->resetColumns()
代码将添加自动分页符并继续到下一页。
我正在使用 TCPDF,目前我使用 array_chunk
在两列中列出数据,效果很好。但我需要数据显示在第一列,然后是第二列,见下文:
Currently:
1 2
3 4
5 6
7 8
9 10
Should be:
1 6
2 7
3 8
4 9
5 10
这是代码:
<?php $array = range(1, 50);?>
<table nobr="true" cellpadding="2">
<?php foreach (array_chunk($array, 2) as $a) { ?>
<tr>
<?php foreach ($a as $array_chunk) { ?>
<td><?php echo $array_chunk; ?></td>
<?php
} ?>
</tr>
<?php } ?>
</table>
我的第二个查询(复杂)如果超过 30 行我需要能够使用 $pdf->AddPage();并在下一页继续。
我有一段时间没有使用 PHP,所以我会让您编写代码,但希望这能帮助您解决问题。
我认为你的秒数问题是最简单的一个:每页只能有 30 行。由于每行有 2 个项目,这意味着每页有 60 个项目。所以简单地将你的数组分成每个数组 60 个项目的数组,就像这样,在伪代码中:
items = [1, 2, 3, ...] // an array of items
pages = []
i = 0
while 60 * i < items.length
pages[i] = items.slice(i * 60, (i + 1) * 60)
i = i + 1
第二个问题是这样的:您想要按列创建输出列,但是 HTML 要求您按行输出它。所以,在我们输出行之前,我们必须知道我们总共要输出多少行:
items = [1, 2, 3, ...] // an array of items
rows = items.length / 2 // The number of rows, make sure you round this right in PHP
n = 0
while n < rows
// The n:th item of the first column
print items[n]
// the n:th item of the second column
print items[rows + n]
print "\n"
n = n + 1
在您的代码中,您可能需要检查项目 [行 + i] 是否存在等。还要确保奇数的舍入符合您的预期。
TCPDF - 支持多列,这是我用来解决问题的方法:
$pdf->AddPage();
$pdf->resetColumns();
$pdf->setEqualColumns(2, 84); // KEY PART - number of cols and width
$pdf->selectColumn();
$content =' loop content here';
$pdf->writeHTML($content, true, false, true, false);
$pdf->resetColumns()
代码将添加自动分页符并继续到下一页。