首页 / PHP / PHP动态表数据结果垂直而不是水平
PHP动态表数据结果垂直而不是水平
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了PHP动态表数据结果垂直而不是水平,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2338字,纯文字阅读大概需要4分钟。
内容图文
![PHP动态表数据结果垂直而不是水平](/upload/InfoBanner/zyjiaocheng/663/ebeaff5356364f02a9ac7ee61265ae34.jpg)
我有一个数据数组,希望在动态表中显示,但垂直需要.
目前,我得到以下输出:
范例1:
1 - 2 - 3 - 4
5 - 6 - 7 - 8
9 - ... etc.
但我需要这样:
范例2:
1 - 4 - 7
2 - 5 - 8
3 - 6 - 9
我已经搜索过Google并在堆栈上,但是找不到可以用来解决问题的简单答案.
$array = array("4|Four","12|Twelve","2|Two","5|Five","11|Eleven","3|Three","1|One","6|Six","10|Ten","8|Eight","7|Seven","9|Nine");
$maxcols = 3;
$i = 0;
$table = "<table width=\"80%\" border=\"0\">\n";
$table .= "<tr>\n";
if(!empty($array))
{
rsort($array,SORT_NUMERIC);
for($p=0;$p<sizeof($array);$p++)
{
list($num,$title) = explode("|", trim($array[$p]));
if ($i == $maxcols)
{
$i = 0;
$table .= "</tr>\n<tr>\n";
}
$table .= "<td>"."[ ".$num." ]"." ".$title."</td>\n";
$i++;
}
while ($i < $maxcols)
{
$table .= "<td> </td>\n";
$i++;
}
$table .= "</tr>\n";
$table .= "</table>\n";
}
echo $table;
上面的代码输出如第一个示例中所示,但是我无法理解第二个示例中的输出.
解决方法:
我本来以为可以使用array_chunk将数组分成几行,但是后来我想到,只用数学就可以做到.
$rows = 3; // define how many rows as you want
$array = array("4|Four","12|Twelve","2|Two","5|Five","11|Eleven","3|Three","1|One",
"6|Six","10|Ten","8|Eight","7|Seven","9|Nine");
rsort($array,SORT_NUMERIC);
// determine number of columns needed to fit the values into the number of rows you want
$columns = count($array) / $rows;
$table = '<table width="80%" border="0">';
for ($i=0; $i < $rows; $i++) {
$table .= '<tr>';
for ($j=0; $j < $columns; $j++) {
$index = (int) ($j * $rows + $i); // Do the math to get the proper array index
if (isset($array[$index])) {
list($num,$title) = explode("|", trim($array[$index]));
$table .= "<td>"."[ ".$num." ]"." ".$title."</td>\n";
} else {
$table .= '<td> </td>';
}
}
$table .= '</tr>';
}
$table .= '</table>';
上面的示例生成了一个像这样的网格,其中数字是数组键.
0 3 6 9
1 4 7 10
2 5 8 11
产生具有两个for循环的网格的数学公式如下:
0*3+0 1*3+0 2*3+0 3*3+0
0*3+1 1*3+1 2*3+1 3*3+1
0*3+2 1*3+2 2*3+2 3*3+2
或换句话说,(列索引*总行数)行索引.无论您要指定行数还是列数,嵌套循环部分都将保持不变.唯一需要更改的是开始时的数学运算,以计算指定数量的列需要多少行,反之亦然.如果将开始部分更改为
$columns = 3;
$rows = ceil(count($array) / $columns);
然后,您应该能够指定列数而不是行数. ceil是必需的,因为除法除法的任何其余部分都必须四舍五入,以便获得所需的总行数.我认为这就是为什么您在第一次切换行和列时得到重复值的原因.
内容总结
以上是互联网集市为您收集整理的PHP动态表数据结果垂直而不是水平全部内容,希望文章能够帮你解决PHP动态表数据结果垂直而不是水平所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。