使用PHP在表格中从上到下打印阵列而不是从左到右
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了使用PHP在表格中从上到下打印阵列而不是从左到右,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3650字,纯文字阅读大概需要6分钟。
内容图文
![使用PHP在表格中从上到下打印阵列而不是从左到右](/upload/InfoBanner/zyjiaocheng/806/fed440ca335b460a998ae1ae622066a4.jpg)
我正在尝试编写一个逻辑来在表格中从上到下而不是从左到右显示记录.
这是我的尝试:
<?php $options = array("1", "2", "3", "4", "5", "6", "7", "8", "9", "10"); ?>
<table border="1" colspan="0" cellspan="0">
<?php
$htmldata = "";
$counter = 1;
$rowcount = ceil(count($options) / 3);
for ($i = 0; $i < count($options); $i++) {
echo $counter % 3 ."<br/>";
if ($counter % 3 == 1) {
$htmldata .= "<tr>";
$htmldata .= "<td>".$options[$i]."</td>";
}
if ($counter % 3 == 2) {
$htmldata .= "<td>".$options[$i]."</td>";
}
if ($counter % 3 == 0) {
$htmldata .= "<td>".$options[$i]."</td>";
$htmldata .= "</tr>";
}
$counter++;
}
echo $htmldata;
exit;
?>
</table>
下面是表格中的当前代码输出.
但我需要表格这样输出.
我怎样才能做到这一点?
你能帮我写一下这个逻辑吗?
此外,它目前显示10条记录,但可能更多或更少,所以我们需要代码是动态的.
任何帮助将不胜感激.提前致谢!
注意:对于任何数量的记录,它必须只有3列,并且输出必须与第二个图片示例中显示的10个记录相同.
解决方法:
希望我的最终答案(毕竟编辑后)
<?php
// feel free to change the values in these variables
$options = array("1", "2", "3", "4", "5", "6", "7", "8", "9", "10");
$numCols = 3; // the number of columns to present
$pad = false; // whether to add blank <td> in final row
// don't alter these variables
$rows = (int)ceil(count($options) / $numCols); // number of rows of the column with most rows
$c = count($options) % $numCols; // how many columns have records on the final row
$col = 1; // current column
// iterate over the columns
for ($j = 0; $j < $numCols; $j++) {
// iterate over rows
for ($i = 0; $i < $rows; $i++) {
// if iteration is last line and on a column with extra data
// or if the iteration is not the last row
// or if the last row perfectly fits the column count
if (($col <= $c && $i == $rows - 1) || $i != $rows - 1 || $c == 0) {
// remove the first element from the options array
$arr[$i][$j] = array_shift($options);
}
}
// move onto the next column
$col++;
}
// create the extra <td> elements in the final row
if ($pad) {
$arr[count($arr) - 1] = array_pad($arr[count($arr) - 1], $numCols, null);
}
?>
<table border="1" colspan="0" cellspan="0">
<?php for ($i = 0; $i < count($arr); $i++) { ?>
<tr>
<?php for ($j = 0; $j < count($arr[$i]); $j++) { ?>
<td><?= $arr[$i][$j]; ?></td>
<?php } ?>
</tr>
<?php } ?>
</table>
我已经编辑了我最初发布的答案,因为它已被破坏并且啰嗦.这个解决方案比以前更整洁,效果更好.
在撰写此答案时,我没有看到有关固定数量列的编辑,因此有一个变量可以在必要时更改列数.随意更改列数($numCols)以及数组中的元素数.如果您需要更改应用程序的要求,请在此处进行操作.
如果你愿意,有一些你可以摆弄的东西.它们如下:
> $选项
这只是您的数据数组.这可以是你想要的任何东西.该表将根据请求从上到下根据此数据创建.
> $numCols
也许你想重命名这个,真的没关系.它是“列数”的缩写,正是如此;无论你放在这里的整数,你都会得到那么多的< td>该行中的元素,或者,如果您不希望以HTML方式读取它们,那么根据提供的数据,您将拥有许多具有后续行数的列.
> $pad
这是因为我注意到最后一行的记录较少 – 除非$options长度可以被$divCols整除,没有余数.
要解决这个问题,我添加了这个选择它在for循环创建数组后使用,并且只使用空值填充最后一行,这样就不会在最后一行的右边有空格.
当然,你是否想要它完全取决于你.就个人而言,我选择将$pad设置为true,因为我认为它使得表格看起来更整洁.
其余的代码我鼓励你不要改变它,因为它将正常工作.
显然,如果你经常使用这个代码,那么你可以将它包装在一个函数中;虽然如果你这样做,我强烈反对你按照原来的方式做,并开始创建一个字符串来存储你的表.
这是不好的做法,可能会导致错误.例如,您可能忘记关闭表 – 您使用exit关键字执行的操作 – 许多现代浏览器都会忽略它,因为它们仍会显示所需的结果,但您的代码将失败验证程序.因此,如果您希望使用函数,请确保它只是PHP代码.然后在数组上调用它并按照我在最后所做的那样进行迭代(我的意思是,带有for循环的表部分不是函数的一部分).
老实说,我不敢相信我花了多长时间这么做!
内容总结
以上是互联网集市为您收集整理的使用PHP在表格中从上到下打印阵列而不是从左到右全部内容,希望文章能够帮你解决使用PHP在表格中从上到下打印阵列而不是从左到右所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。