【发布时间】:2013-12-14 00:07:47
【问题描述】:
我正在尝试构建一个非常简单的图表或流程图来表示建筑物。
$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 )具有最高计数( apartments ) - 然后将其设置为标题 - 但我不知道该怎么做。
所以
如何计算嵌套数组中的元素并比较它们以查看“人口最多的楼层”
已经完成了 - 我如何计算与该最大值相关的每层公寓的
colspan。 (colspan只能有 int() 而不能有分数或百分比)建筑物被认为是从下到上,而桌子是从上到下,所以我需要翻转数组,但保留'colspan'的计算
最后但并非最不重要 - 我可能看错了,可能有一种更简单的方法来实现想要的结果(也许是 div?) - 但我现在看不到 - 所以如果存在 -请“打”我,给我指路..
编辑我
如前所述:解决方案必须对所有配置都灵活: 示例:
$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 或任何其他方法来实现这一目标..
【问题讨论】:
标签: php html html-table