【发布时间】:2019-12-17 20:06:42
【问题描述】:
假设您有一个 HTML 元素数组(按照它们的出现顺序)
$array = array(
1=>array( 'level' => 1, 'element' => '<div class="parent">'),
2=>array( 'level' => 2, 'element' => '<div class="child">'),
3=>array( 'level' => 3, 'element' => '<span class="child2">'),
4=>array( 'level' => 2, 'element' => '<div class="child">'),
5=>array( 'level' => 2, 'element' => '<div class="child">'),
6=>array( 'level' => 3, 'element' => '<span class="child2">'),
7=>array( 'level' => 4, 'element' => '<span class="child3">'),
);
你如何规划一个foreach 循环来查找关闭 HTML 标记的位置以将字符串输出为
<div class="parent">
<div class="child">
<span class="child2">
<span>
</div>
<div class="child">
</div>
<div class="child">
<span class="child2">
<span class="child3">
</span>
</span>
</div>
</div>
我的尝试是这样的
foreach($array as $e){
echo $e['element'];
$level = $e['level'];
if($level<=$previous_level) {
echo $closing;
$closing = '';
}
$closing.= '</'. $element . '>'; // which comes from parsed $e['element'];
$previous_level = $level;
}
【问题讨论】:
-
到目前为止你尝试了什么?
-
@RakeshJakhar 我尝试在循环时将结束标记存储在字符串/数组中,但无法在正确的时间释放存储的结束标记。
-
所以...给我们看一些代码。
-
@Marcel 我添加了一个简化代码供您参考。
-
你为什么不把它们当作一棵树排序并递归呢?更容易
标签: php html arrays multidimensional-array foreach