我能否修改我的列,以便在需要时根据行中的项目数添加 colspan?
场景:
假设我有 5 个项目,我需要一行/4 列,下一行 1 列 colspan="4"
假设我有 6 个项目,我需要 1 行/4 列,下一行,2 列 colspan="2"
假设我有 7 个项目,我需要 1 行/4 列,下一行,2 列没有 colspan,+ 1 列有 colspan="2"
这是我现有的代码:
echo '<table width="100%" cellpadding="10" cellspacing="5">' . PHP_EOL;
$colSpan = 4;
$rows = 0;
for($i = 0; $i < $tmpCt; $i++) {
// At column 0 you create a new row <tr>
if($i % $colSpan == 0) {
$rows++;
echo "<tr>\n";
}
// if only 1 item in the row, need to add colspan="4", 2 items colspan="2" for 2 <td>'s, 3 items 1 @ colspan="2" + 2 <td>'s
echo '<td width="25%" align="center" valign="middle">' . $tmpRet[$i]['sponName'] . '</td>' . PHP_EOL;
// At column 3 you end the row </tr>
echo $i % $colSpan == 3 ? "</tr>\n" : "";
}
// Say you have 5 columns, you need to create 3 empty <td> to validate your table!
for($j = $i; $j < ($colSpan * $rows); $j++) {
echo "<td> </td>\n";
}
// Add the final <tr>
if(($colSpan * $rows) > $i) {
echo "</tr>\n";
}
echo '</table>';
最佳答案
好吧,算术有用的时候!
您需要的是在每个级别使用模运算。
这是我的解决方案:
$tmpRet = array(
array(1),
array(1, 2, 3),
array(1, 2, 3, 4, 5, 6, 7),
array(1, 2, 3, 4, 5),
array(1, 2),
array(1, 2, 3, 4, 5, 6),
array(),
array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16),
array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
);
$lencol = count($tmpRet);
echo '<table border="1" width="800px" cellpadding="10" cellspacing="5">'.PHP_EOL;
$colspan = 4;
for($i = 0; $i < $lencol; $i++) {
$bg = 'style="background-color: #'.rand(100, 999).'"';
$row = $tmpRet[$i];
$lc = count($row);
$offset = 0;
if ($lc>$colspan) {
$ct = floor($lc/$colspan);
$offset = $ct * $colspan;
$m = 0;
for ($k = 0; $k<$ct; $k++) {
echo '<tr '.$bg.' >';
for ($l = 0; $l<$colspan; $l++) {
echo '<td>'.$row[$m].'</td>';
$m++;
}
echo '<tr>';
}
}
$mod = $lc % $colspan;
switch ($mod) {
case 1:
echo '<tr '.$bg.' ><td colspan="4">'.$row[$offset].'</td></tr>';
break;
case 2:
echo '<tr '.$bg.' ><td colspan="2">'.$row[$offset].'</td><td colspan="2">'.$row[$offset+1].'</td></tr>';
break;
case 3:
echo '<tr '.$bg.' ><td>'.$row[$offset].'</td><td>'.$row[$offset+1].'</td><td colspan="2">'.$row[$offset+2].'</td></tr>';
break;
}
}
echo '</table>';
这就是它的样子:
希望对你有帮助
编辑:这仅适用于 $colspan=4,如果您需要更动态的东西,请考虑用其他东西替换 switch 语句...也许是嵌套的循环...
关于php - 根据项目计数修改列跨度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18320148/
如何在buildr项目中使用Ruby?我在很多不同的项目中使用过Ruby、JRuby、Java和Clojure。我目前正在使用我的标准Ruby开发一个模拟应用程序,我想尝试使用Clojure后端(我确实喜欢功能代码)以及JRubygui和测试套件。我还可以看到在未来的不同项目中使用Scala作为后端。我想我要为我的项目尝试一下buildr(http://buildr.apache.org/),但我注意到buildr似乎没有设置为在项目中使用JRuby代码本身!这看起来有点傻,因为该工具旨在统一通用的JVM语言并且是在ruby中构建的。除了将输出的jar包含在一个独特的、仅限ruby
我在我的Rails项目中使用Pow和powifygem。现在我尝试升级我的ruby版本(从1.9.3到2.0.0,我使用RVM)当我切换ruby版本、安装所有gem依赖项时,我通过运行railss并访问localhost:3000确保该应用程序正常运行以前,我通过使用pow访问http://my_app.dev来浏览我的应用程序。升级后,由于错误Bundler::RubyVersionMismatch:YourRubyversionis1.9.3,butyourGemfilespecified2.0.0,此url不起作用我尝试过的:重新创建pow应用程序重启pow服务器更新战俘
我已经像这样安装了一个新的Rails项目:$railsnewsite它执行并到达:bundleinstall但是当它似乎尝试安装依赖项时我得到了这个错误Gem::Ext::BuildError:ERROR:Failedtobuildgemnativeextension./System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/rubyextconf.rbcheckingforlibkern/OSAtomic.h...yescreatingMakefilemake"DESTDIR="cleanmake"DESTDIR="
我有一个用户工厂。我希望默认情况下确认用户。但是鉴于unconfirmed特征,我不希望它们被确认。虽然我有一个基于实现细节而不是抽象的工作实现,但我想知道如何正确地做到这一点。factory:userdoafter(:create)do|user,evaluator|#unwantedimplementationdetailshereunlessFactoryGirl.factories[:user].defined_traits.map(&:name).include?(:unconfirmed)user.confirm!endendtrait:unconfirmeddoenden
假设我有这个范围:("aaaaa".."zzzzz")如何在不事先/每次生成整个项目的情况下从范围中获取第N个项目? 最佳答案 一种快速简便的方法:("aaaaa".."zzzzz").first(42).last#==>"aaabp"如果出于某种原因你不得不一遍又一遍地这样做,或者如果你需要避免为前N个元素构建中间数组,你可以这样写:moduleEnumerabledefskip(n)returnto_enum:skip,nunlessblock_given?each_with_indexdo|item,index|yieldit
尝试在我的RoR应用程序中实现计数器缓存列时出现错误Unknownkey(s):counter_cache。我在这个问题中实现了模型关联:Modelassociationquestion这是我的迁移:classAddVideoVotesCountToVideos0Video.reset_column_informationVideo.find(:all).eachdo|p|p.update_attributes:videos_votes_count,p.video_votes.lengthendenddefself.downremove_column:videos,:video_vot
我正在尝试按0-9和a-z的顺序创建数字和字母列表。我有一组值value_array=['0','1','2','3','4','5','6','7','8','9','a','b','光盘','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','','u','v','w','x','y','z']和一个组合列表的数组,按顺序,这些数字可以产生x个字符,比方说三个list_array=[]和一个当前字母和数字组合的数组(在将它插入列表数组之前我会把它变成一个字符串,]current_combo['0','0','0']
最近因为项目需要,需要将Android手机系统自带的某个系统软件反编译并更改里面某个资源,并重新打包,签名生成新的自定义的apk,下面我来介绍一下我的实现过程。APK修改,分为以下几步:反编译解包,修改,重打包,修改签名等步骤。安卓apk修改准备工作1.系统配置好JavaJDK环境变量2.需要root权限的手机(针对系统自带apk,其他软件免root)3.Auto-Sign签名工具4.apktool工具安卓apk修改开始反编译本文拿Android系统里面的Settings.apk做demo,具体如何将apk获取出来在此就不过多介绍了,直接进入主题:按键win+R输入cmd,打开命令窗口,并将路
我有一个使用SeleniumWebdriver和Nokogiri的Ruby应用程序。我想选择一个类,然后对于那个类对应的每个div,我想根据div的内容执行一个Action。例如,我正在解析以下页面:https://www.google.com/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=puppies这是一个搜索结果页面,我正在寻找描述中包含“Adoption”一词的第一个结果。因此机器人应该寻找带有className:"result"的div,对于每个检查它的.descriptiondiv是否包含单词“adoption
我需要根据字符串路径的长度将字符串路径数组转换为符号、哈希和数组的数组给定以下数组:array=["info","services","about/company","about/history/part1","about/history/part2"]我想生成以下输出,对不同级别进行分组,根据级别的结构混合使用符号和对象。产生以下输出:[:info,:services,about:[:company,history:[:part1,:part2]]]#altsyntax[:info,:services,{:about=>[:company,{:history=>[:part1,:pa