在PHP中动态创建嵌套DIV

时间:2010-06-22 07:08:49

标签: php

我想动态创建嵌套 div,最好不要使用JavaScript。

因此,如果您有n个DIV,DIV1包含DIV1,其中包含DIV3等......

我如何在PHP中编写代码?

4 个答案:

答案 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 -->这样的评论所指的内容;随意调整以适应您自己的编码需求和风格。