你可以做这样的事情你提到你知道如何使用array_chunk();
让我们来看看使用名为 array_chunk(); 的内置 PHP 函数来简化流程
我们将使用不推荐的 HTML 表格进行设计。使用 CSS 可以更好地完成这项任务,您可以在没有 HTML 和 CSS 的情况下遵循相同的方式。
我们的餐桌:
id datePosted firstName lastName pictureName anotherColumn
1 2013-07-01 John Smith SmithJohn.jpg anotherValue
2 2013-05-06 Elroy Johnson JohnsonElroy.jpg anotherValue
3 2013-06-18 Jake Bible BibleJake.jpg anotherValue
4 2013-07-17 Steve Stevenson StevensonSteve.jpg anotherValue
5 2013-04-08 Bill Smith SmithBill2.jpg anotherValue
构建 HTML 表格
PDO 查询用于通过准备好的语句获取数据库信息,注意循环只生成显示列的代码。
检测行开始和结束位置的测试是不必要的。
//INITIALIZE VARIABLES
$colsToDisplay = 3;
$htmlOutput = array();
//GET PICTURE LIST
$sql = "SELECT datePosted, firstName, lastName, pictureName FROM pictureList ORDER BY datePosted DESC";
$stmt = $pdo->prepare($sql);
$stmt->execute();
while($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
$htmlOutput[] = "<td><img src='images/{$row['pictureName']}' alt='' /><br />{$row['firstName']} {$row['lastName']}</td>";
}
循环完成后,包含列信息的数组可以分成三个一组...或分配给$colsToDisplay 的任何值,我们在这里做了什么?我们取了 3表格中的列,因此将表格分为两部分。
while($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
//...
}
//BREAK THE COLUMNS INTO GROUPS
$htmlOutput = array_chunk($htmlOutput, $colsToDisplay);
剩下的就是显示表格信息。请注意,array_chunk() 创建了一个多维数组。 foreach 循环用于处理列组。每个组都分配给$currRow,其中包含当前行的列数组。 implode() 函数用于快速将列显示为字符串。
让我们继续:
//BREAK THE COLUMNS INTO GROUPS
$htmlOutput = array_chunk($htmlOutput, $colsToDisplay);
//DISPLAY TABLE
print '<table>';
foreach($htmlOutput as $currRow) {
print '<tr>' . implode('', $currRow) . '</tr>';
}
print '</table>';
检查缺失的列标签
您可能已经注意到,添加缺失列的代码被遗漏了。
换句话说,这个例子产生了一个 HTML 表格,其中最后一行只有两列。
显然,根据W3C Markup Validation Service…,缺少的列不需要,因此它们不包括在内。但是,可以通过在调用 array_chunk() 之前运行以下代码来添加它们。
$colsDifference = count($htmlOutput) % $colsToDisplay;
if($colsDifference) {
while($colsDifference < $colsToDisplay) {
$htmlOutput[] = '<td></td>';
$colsDifference++;
}
}
最终代码:
//INITIALIZE VARIABLES
$colsToDisplay = 3;
$htmlOutput = array();
//GET PICTURE LIST
$sql = "SELECT datePosted, firstName, lastName, pictureName FROM pictureList ORDER BY datePosted DESC";
$stmt = $pdo->prepare($sql);
$stmt->execute();
while($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
$htmlOutput[] = "<td><img src='images/{$row['pictureName']}' alt='' /><br />{$row['firstName']} {$row['lastName']}</td>";
}
//OPTIONAL CODE
//IF NEEDED, ADD MISSING COLUMNS
$colsDifference = count($htmlOutput) % $colsToDisplay;
if($colsDifference) {
while($colsDifference < $colsToDisplay) {
$htmlOutput[] = '<td></td>';
$colsDifference++;
}
}
//END: OPTIONAL CODE
//BREAK THE COLUMNS INTO GROUPS
$htmlOutput = array_chunk($htmlOutput, $colsToDisplay);
//DISPLAY TABLE print '<table>';
foreach($htmlOutput as $currRow) {
print '<tr>' . implode('', $currRow) . '</tr>';
}
print '</table>';
本教程背后的想法:
- 您无需创建文件并将数组写入该文件即可在数据表中显示。
- 如果您仍然希望可以(将表格分成两部分)创建两个数组,然后写入文件,然后使用
array_push(); 或array_merge(); 将两个数组合二为一。
我可能有不好的解释,请原谅错误,希望这对你的编码生活有帮助:)