如何在PHP中避免这样的重复if语句?

时间:2016-05-17 07:26:05

标签: php

在组织了以下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

1 个答案:

答案 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);
    }
}