php-在偶数行中具有偶数个单元格元素的HTML表(colspan)
作者:互联网
我试图建立一个非常简单的建筑物图表或流程图表示.
$floors = array( array( 'app_1','app_2','app_2_A' ),
array( 'app_3','app_4','app_5'),
array( 'app_6','app_7', 'app_8','app_9') ,
array( 'app_10','app_11', 'app_12','app_13') ,
array( 'app_14','app_15', 'app_16') ,
);
echo "<table border='2'>";
foreach ($floors as $floor ) {
$total_app = count( $floor);
echo "<tr>";
for($i = 0;$i < $total_app; $i++){
echo "<td colspan=" .$total_app. ">";
echo $floor[$i] . ' ( ' . $total_app . ' ) '; //brackets only for debug
echo "</td>";
}
echo "</tr>";
}
echo "</table>";
结果是:
问题是:客户希望所有行的宽度相等,并且并非所有楼层都具有相同数量的公寓.
所以我想我会用’colspan’. (在代码echo“< td colspan =”.$total_app.“>”;)中
问题(2):该脚本需要在100栋不同的建筑物上工作,因此,对于“ colspan”而言,任何小于完整动态计算的工作都将不起作用.
据我了解,Colspan实际上是相对于我拥有的最大单元数(具有最大元素数的行).
如果这是真的,那么我需要知道哪个数组元素(floor)具有最高的计数(公寓)-然后将其设置为标头-但我不确定该怎么做.
所以
>如何计算嵌套数组中的元素并进行比较以查看“人口最多的楼层”
>完成该操作-如何计算与该最高数量相关的每层公寓排的colspan. (colspan只能有int(),而不能有分数或百分数)
>建筑物被认为是从下到上,从上到下都是桌子,所以我需要翻转数组,但要保留“ colspan”的计算
>最后但并非最不重要的一点-我可能看错了一切,可能有一种更简单的方法来达到想要的结果(也许是divs?)-但我现在看不到一个-如果存在,请“拍一拍”我,给我看看路..
编辑我
就像之前说过的:解决方案必须灵活适用于所有配置:
范例:
$floors = array( array( 'app_1','app_2','app_2_A','app_2_B','app_2_C', 'app_2_D'),
array( 'app_3','app_4','app_5'),
array( 'app_6','app_7') ,
array( 'app_10','app_11', 'app_12','app_13') ,
array( 'app_14') ,
);
因此,任何“硬编码” colspan计算的尝试都将失败.
我需要行(楼层)的宽度相等,并且要使单元格(公寓)的每一行都填满,例如,如果我有2套公寓,则每行的宽度为50%(如果我有) 4套公寓,每套将占25%,3套公寓-33%,依此类推.
问题是如何在可能的情况下使用colspan或任何其他方法来实现这一目标.
解决方法:
首先,colspan是该行的立场,具有3列,但是我希望该行将所有列合并在单个单元格中,您可以使用colspan.
<?
$max_app = 0;
foreach( $floors as $floor ){
$max_app = max(count($floor), $max_app);
}
echo "<table border='2'>";
foreach( $floors as $floor ){
echo "<tr>";
for( $a=0;$a<count($floor);$a++ ){
if( $a+1 == count($floor) && $a+1 < $max_app ){
//last cell, total number of cell in floor does not equals to $max_app
echo "<td colspan='" . ($max_app - $a) . "'>";
}else{
echo "<td>";
}
echo $floor[$a];
echo "</td>";
}
echo "</tr>";
}
echo "</table>";
?>
另一种解决方案是将DIV与float:left;一起使用.但是DIV的宽度需要知道.引起您的要求:所有单元都需要使用相同的宽度.
编辑1
您是否想要一个解决方案,使所有行的宽度相同,并且每行的所有单元格宽度相同???
<?
echo "<table border='0'>";
foreach( $floors as $floor ){
echo "<tr><td><table border='1' width='100%'><tr>";
$percent = ceil( 100 / count($floor) );
foreach($floor as $app){
print("<td width='{$percent}%'>{$app}</td>");
}
echo "</tr></table></td></tr>";
}
echo "</table>";
?>
标签:html-table,html,php 来源: https://codeday.me/bug/20191122/2059749.html