在组织了以下PHP代码后,我发现它们实际上又重复了一遍。
有没有办法改进并将代码扩展到无限级别?
我们通常在技术术语中将此问题称为什么?
$tags = [
0 => ['0.1','0.2'],
1 => ['1.1','1.2'],
2 => ['2.1','2.2']
];
$num = count($tags);
$level = 0;
foreach ($tags[$level] as $tag) {
echo '<p style="text-indent:'.(2*$level).'em">';
echo $tag;
echo '</p>';
$level++;
if($level<=($num-1)){
foreach ($tags[$level] as $tag) {
echo '<p style="text-indent:'.(2*$level).'em">';
echo $tag;
echo '</p>';
$level++ ;
if($level<=($num-1)){
foreach ($tags[$level] as $tag) {
echo '<p style="text-indent:'.(2*$level).'em">';
echo $tag;
echo '</p>';
$level++ ;
if($level<=($num-1)){
foreach ($tags[$level] as $tag) {
echo '<p style="text-indent:'.(2*$level).'em">';
echo $tag;
echo '</p>';
}
}
$level--;
}
}
$level--;
}
}
$level--;
}
这是代码的结果。
0.1
1.1
2.1
2.2
1.2
2.1
2.2
1.1
1.1
2.1
2.2
1.2
2.1
2.2
答案 0 :(得分:2)
<?php
$tags = Array(
0 => Array('0.1','0.2'),
1 => Array('1.1','1.2'),
2 => Array('2.1','2.2'),
);
$num = count($tags);
myshow(0);
function myshow($level)
{
global $tags, $num;
foreach ($tags[$level] as $tag) {
echo '<p style="text-indent:'.(2*$level).'em">';
echo $tag;
echo '</p>';
if($level+1 < $num)
myshow($level+1);
}
}