PHP解释器表现得很奇怪

时间:2013-11-26 10:32:04

标签: 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();

预期结果

1 2 3

实际结果

13 2

2 个答案:

答案 0 :(得分:5)

echo已经echo'了。这两个方法在渲染回显之前运行。因此,首先运行每个方法中的echo,然后运行类外的回显。然而,它唯一会呈现的是2

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

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

$a = new A;
echo $a->disp1()." 2 ".$a->disp3();

答案 1 :(得分:1)

这是因为你有方法的回声,而不是回归。所以首先它将回显1然后是3,然后结果现在为“2”,因为方法返回NULL。