2
<?php
//firt class of eitay

class hello
    {
        //hello word.
        public $first = 'hello world';

        public function first_method()
        {
            $a = 1;
            $b = 2;
            $c = $a + $b;
            return $c;
            return $this->first;
        }
    }

    $momo = new hello();
    print $momo->first_method();
4

5 回答 5

3

它只打印$c,因为函数在那之后返回。当您返回一个函数(在本例中为 you return $c)时,它将停止执行并返回到调用函数。

于 2012-09-01T13:16:50.403 回答
3

一个方法只返回一次并且立即返回。多个 return 语句是多余的,因为只有第一个被执行。

如果要返回多个结果,可以使用关联数组:

return array(
    "result" => $my_result,
    "time" => $end_time - $start_time
);
于 2012-09-01T13:16:56.237 回答
0

正如其他人所说,php 正在返回它看到的第一个返回值。

我还必须问为什么您不将方法视为对象,而更像是对函数的封装。

如果您想在一个方法中创建多个值,只需将它们分配给对象范围,$this然后只要属性是公共的(默认情况下是公共的),您就可以从类外部访问该属性,这是一个示例:

<?php 
class hello{
    public $first = 'hello world';

    function first_method(){
        $this->a = 1;
        $this->b = 2;
        $this->c = $this->a + $this->b;
    }

    function add_more($key, $value){
        $this->$key += $value;
    }
}

$momo = new hello();

$momo->first_method();

echo $momo->first; //hello world
echo $momo->a; //1
echo $momo->b; //2
echo $momo->c; //3

//Alter the propery with a method
$momo->add_more('a', 5); //1+5=6
$momo->add_more('b', 53);//2+53=55
echo $momo->a;//6
echo $momo->b;//55
?>

传递数组不是 oop。

于 2012-09-01T13:33:44.583 回答
0

它应该3在第一个return退出函数时打印,并且输出是$c具有价值的3

于 2012-09-01T13:18:55.923 回答
0

http://php.net/manual/en/function.return.php

如果从函数内部调用,return 语句会立即结束当前函数的执行,并将其参数作为函数调用的值返回。return 还将结束 eval() 语句或脚本文件的执行。

如果从全局范围调用,则结束当前脚本文件的执行。如果包含或需要当前脚本文件,则将控制权传递回调用文件。此外,如果包含当前脚本文件,则返回的值将作为包含调用的值返回。如果从主脚本文件中调用 return,则脚本执行结束。如果当前脚本文件由 php.ini 中的 auto_prepend_file 或 auto_append_file 配置选项命名,则该脚本文件的执行结束。

所以这是不可能发生的有一个测试:http: //ideone.com/HhzQa

于 2012-09-01T13:23:32.567 回答