我想动态创建嵌套 div,最好不要使用JavaScript。
因此,如果您有n
个DIV,DIV1包含DIV1,其中包含DIV3等......
我如何在PHP中编写代码?
答案 0 :(得分:3)
function recursiveDiv($num) {
$html = '<div id="div'.$num.'">%s</div>';
for($i = $num - 1; $i >= 1; $i--) {
$html = '<div id="div'.$i.'">'.$html.'</div>';
}
return $html;
}
echo sprintf(recursiveDiv(5), 'Hello World');
未经测试,但应该给你想要的。
答案 1 :(得分:2)
这是一个使用$ n = 3的简单循环示例。您可以将$ n更改为任意数字,它将为您嵌套div标签。我不完全确定你为什么要这样做,但现在就是这样。
$openingTags = '';
$closingTags = '';
$n = 3;
for ($i = 0; $i < $n; ++$i) {
$openingTags .= '<div id="div' . $i . '">';
$closingTags .= '</div>';
}
echo $openingTags . 'Hello World' . $closingTags;
答案 2 :(得分:1)
此代码应该允许您创建嵌套的div并使用内容填充它们。用下面的原始代码替换,这应该可以工作但是未经测试
$result = mysql_query("SELECT * FROM table");
$count = mysql_num_rows($result);
$html = '';
$end_html = '';
while($row = mysql_fetch_object($result)){
$html .= '<div id="div'.$count.'">'.$row->textfield; # any database column
$end_html .= '</div>';
$count--;
}
echo $html . $end_html;
答案 3 :(得分:0)
虽然其他人建议使用基于for
循环的数学解决方案,但您可以通过使用如下数组更明确地 - 明确地设置类名 - 来做到这一点:
// Set the DIVs array.
$divs_array = array();
$divs_array[] = 'DIV1';
$divs_array[] = 'DIV2';
$divs_array[] = 'DIV3';
现在使用该数组,您可以使用implode
获取这些数组的内容,并将它们设置为DIV类值。请注意,implode
逻辑可能看起来令人困惑,但请查看它创建的内容并查看代码的设置方式,并在一段时间后更有意义:
// Set the DIVs.
$div_opening = $div_closing = '';
if (!empty($divs_array)) {
$div_opening = '<div class="' . implode($divs_array, '">' . "\n" . '<div class="') . '">';
$div_closing = '</div><!-- .' . implode(array_reverse($divs_array), '-->' . "\n" . '</div><!-- .') . ' -->';
}
然后您可以在$div_opening
和$div_closing
值之间设置内容,如下所示:
// Return the content wrapped in the DIVs.
echo $div_opening
. '<p>Hello world.</p>'
. $div_closing
;
输出将是这样的:
<div class="DIV1">
<div class="DIV2">
<div class="DIV3">
<p>Hello world.</p>
</div><!-- .DIV3 -->
</div><!-- .DIV2 -->
</div><!-- .DIV1 -->
注意我的个人编码风格是 - 尽可能 - 在每个DIV之后设置注释,清楚地显示</div>
实际关闭的内容。这就是像<!-- .DIV3 -->
这样的评论所指的内容;随意调整以适应您自己的编码需求和风格。