PHP解释器表现得很奇怪

Cat*_*ler 0 php class output

我在课堂上发现了这种奇怪的行为.这是一个PHP Bug吗?

<?php
class A
{

public function disp1()
{
echo "1";

}

public function disp3()
{
echo "3";
}

}

$a = new A;
echo $a->disp1()." 2 ".$a->disp3();
Run Code Online (Sandbox Code Playgroud)

预期结果

1 2 3

实际结果

13 2 2

Geo*_*rge 5

你正在echo做什么echo.这两个方法在渲染回显之前运行.因此,echo首先运行每个方法中的s,然后运行类外的回声.然而,它唯一会呈现的是2.

要获得预期结果,您需要返回每个方法的值:

class A {
    public function disp1() {
        return "1";
    }
    public function disp3() {
        return "3";
    }
}

$a = new A;
echo $a->disp1()." 2 ".$a->disp3();
Run Code Online (Sandbox Code Playgroud)