为什么PHP在交换了两行后,在不改变条件的情况下反向打印此函数

为什么PHP在交换了两行后,在不改变条件的情况下反向打印此函数,php,Php,我有一个displayNumber代码,如果输入的数字大于1,它会打印该数字,然后用数字-1再次调用displayNumber函数 function displayNumber($number) { if ($number >= 1) { echo $number; displayNumber($number-1); } return; } displayNumber(10); 输出为:10987654321 但在交换echo和

我有一个displayNumber代码,如果输入的数字大于1,它会打印该数字,然后用数字-1再次调用displayNumber函数

function displayNumber($number) {
    if ($number >= 1) {
        echo $number;
        displayNumber($number-1);
    }

    return;
}

displayNumber(10);
输出为:
10987654321

但在交换echo和displayNumber行之后:

function displayNumber($number) {
    if ($number >= 1) {
        displayNumber($number-1);
        echo $number;
    }

    return;
}

displayNumber(10);
现在输出为:
12345678910


我无法理解PHP的这种行为。

我修改了您的代码以使其更易于理解:

function displayNumber($number) {
    if ($number >= 1) {
        echo $number ."<br>";
        displayNumber($number-1);
        echo $number . "---";
    }
}

displayNumber(10);
在第一种情况下,打印值,然后按1递减。在第二种情况下,值递减1,然后打印


此外,第一个回显每次都会运行,但第二个回显不会发生这种情况,因为函数在它之前被调用。

您交换了操作顺序,因此首先达到最小的数字,然后开始从最小值打印到最大值。就这么简单。如果你有正确的设置-你可以调试它并一步一步地运行它。这将向您展示代码的执行流程。或者你可以手动跟踪它,看看它是如何工作的。这就是递归的工作原理@reeshkeed你应该看到一些函数递归的例子。
10
9
8
7
6
5
4
3
2
1
1---2---3---4---5---6---7---8---9---10---