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

メソッドは 1 回だけ、すぐに戻ります。最初のステートメントのみが実行されるため、複数の 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
?>

配列を渡すことはおっとではありません。

于 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 に指定された値がインクルード呼び出しの値として返されます。メイン スクリプト ファイル内から return が呼び出されると、スクリプトの実行が終了します。現在のスクリプト ファイルが php.ini の auto_prepend_file または auto_append_file 構成オプションによって指定された場合、そのスクリプト ファイルの実行は終了します。

そのため、テストを行うことは不可能です: http://ideone.com/HhzQa

于 2012-09-01T13:23:32.567 に答える