最优雅的模板是什么(最好是用纯PHP!)你见过的解决方案吗?
具体来说,我感兴趣的是如何处理:
我在找一些能让这不那么痛苦的东西:
<?php
$persons = array('John', 'Jack', 'Jill', 'Jason');
?>
<?php $i = 0; ?>
<?php if (isset($persons)): ?>
<ul>
<?php foreach ($persons as $name): ?>
<li class="<?= ($i++ % 2 === 0) ? 'odd' : 'even' ?>"><?= $name ?></li>
<?php endforeach ?>
</ul>
<?php endif ?>
创建下面这样的东西真的需要上面的混乱吗?
<ul>
<li class="odd">John</li>
<li class="even">Jack</li>
<li class="odd">Jill</li>
<li class="even">Jason</li>
</ul>
是不是只有我一个人觉得上面的这些近乎可怕?
所有那些php-tag的开头和结尾都让我感到畏缩。
发布于 2008-10-02 19:40:01
您不需要多次打开标记。如果你多次做同样的事情,你也可以用它做一个函数:
<?php
function makeul($items, $classes) {
$c = count($classes);
$out = "";
if (isset($items) && count($items) > 0) {
$out = "<ul>\n";
foreach ($items as $item) {
$out .= "\t<li class=\"" . $classes[$i++%$c] . "\">$item</li>\n";
}
$out .= "</ul>\n";
}
return $out;
}
?>
other page content
<?php
$persons = array('John', 'Jack', 'Jill', 'Jason');
$classes = array('odd', 'even');
print makeul($persons, $classes);
?>
另外,如果你不介意使用Javascript,Jquery让mod 2的事情变得非常简单(例如,斑马在桌子上做条纹):
$("tr:odd").addClass("odd");
$("tr:even").addClass("even");
发布于 2008-10-02 18:32:12
微小但强大
它不会犯在页面中嵌入另一种宏语言的聪明错误,但它确实允许您处理我所遇到的每一个实际的web显示问题。特别是,上面的奇/偶结构是轻而易举的。对于您的代码从数据库表中选择之类的内容,
在PHP文件中
$TBS->MergeBlock('blk1',$sqlconnect, "SELECT name from people ");
在HTML文件中
<ul>
<li class="odd">[blk.name;block=ul]</li>
<li class="even">[blk.name;block=ul]</li>
</ul>
就是这样。请注意,HTML与Dreamweaver完全兼容。此外,如果我想要在三种线条样式上进行替换,我所需要做的就是添加额外的线条,可能具有不同的类,所以
<ul>
<li class="linestyle1">[blk.name;block=ul]</li>
<li class="linestyle2">[blk.name;block=ul]</li>
<li class="linestyle3">[blk.name;block=ul]</li>
</ul>
发布于 2009-06-17 00:31:56
关于循环的一个小帮助:
<? $b=false; foreach($MyList as $name) { ?>
<li class="row<?= $b=!$b ?>"><?= htmlspecialchars($name); ?></li>
<? } ?>
通过说$b=!$b
,它会自动在true和false之间切换。由于false打印为"",而true打印为"1",因此通过定义css类row
和row1
,您可以毫不费力地获得更改的行。
考虑使用:first-child
css以不同的方式设置第一个样式。
https://stackoverflow.com/questions/163834
复制相似问题