Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 获取从类返回的两个值_Php - Fatal编程技术网

Php 获取从类返回的两个值

Php 获取从类返回的两个值,php,Php,我试图理解面向对象的PHP编程,并编写了一个小班来学习。我很难理解为什么它没有按照我的意愿工作。类方法中有两个变量hello()$result和$test。我试图访问存储在这两个变量中的数据,并将其打印到屏幕上。我知道我可以在方法内部调用一个echo,但我正在尝试让它在方法外部进行echo 我打印到屏幕上的是88它不打印第二个变量$test。我试图理解为什么会发生这种情况。我的不理解可能表现在代码中 <?php class simpleClass{ public functio

我试图理解面向对象的PHP编程,并编写了一个小班来学习。我很难理解为什么它没有按照我的意愿工作。类方法中有两个变量
hello()
$result
$test
。我试图访问存储在这两个变量中的数据,并将其打印到屏幕上。我知道我可以在方法内部调用一个echo,但我正在尝试让它在方法外部进行echo

我打印到屏幕上的是
88
它不打印第二个变量
$test
。我试图理解为什么会发生这种情况。我的不理解可能表现在代码中

<?php

class simpleClass{

    public function hello($result,$test) {
        $result = 4+4;
        $test = 10+5;
        return $result;
        return $test;
    }
}

$a = new simpleClass;
echo $a->hello();
echo $a->hello($result, $test);

?>

您可以返回
列表
数组

public function hello($result,$test) {
        $result = 4+4;
        $test = 10+5;
        return array($result, $test);
    }

您可以返回
列表
数组

public function hello($result,$test) {
        $result = 4+4;
        $test = 10+5;
        return array($result, $test);
    }

由于
return
的工作方式,同一函数中不能有多个
return
语句。当遇到
return
语句时,函数停止执行,然后传递回调用方。函数的其余部分永远不会运行。

由于
return
的工作方式,同一函数中不能有多个
return
语句。当遇到
return
语句时,函数停止执行,然后传递回调用方。函数的其余部分永远不会运行。

请使用:

例如,作为指示计算是否正确的标志

使用:


例如,作为指示计算是否正确的标志

复杂的答案是使用模型

class simpleResultTestModel {
    public $result;
    public $test;
    public function __construct($result,$test) {
        $this->result = $result;
        $this->test = $test;
    }
}

class simpleClass {
    public function hello($result=4, $test=10) {
        $result = $result+4;
        $test = $test+5;
        return new simpleResultTestModel($result, $test);
    }
}
这样,您就知道
simpleClass->hello()
将始终返回
simpleResultTestModel
的实例

此外,我还更新了hello方法定义。您有两个参数,但并不实际应用它们;我随意设置默认值,然后在计算中使用它们

用法:

$a = new simpleClass();

$first = $a->hello();
echo $first->result;
echo $first->test;

$second = $a->hello($first->result,$first->test);
echo $second->result;
echo $second->test;

我会尽量避免通过引用传递(特别是在类定义中),除非您有合理的理由这样做。在创建类实例时,这是一种不好的做法(如果愿意,也就是“粘性值”)

复杂的答案是使用模型

class simpleResultTestModel {
    public $result;
    public $test;
    public function __construct($result,$test) {
        $this->result = $result;
        $this->test = $test;
    }
}

class simpleClass {
    public function hello($result=4, $test=10) {
        $result = $result+4;
        $test = $test+5;
        return new simpleResultTestModel($result, $test);
    }
}
这样,您就知道
simpleClass->hello()
将始终返回
simpleResultTestModel
的实例

此外,我还更新了hello方法定义。您有两个参数,但并不实际应用它们;我随意设置默认值,然后在计算中使用它们

用法:

$a = new simpleClass();

$first = $a->hello();
echo $first->result;
echo $first->test;

$second = $a->hello($first->result,$first->test);
echo $second->result;
echo $second->test;

我会尽量避免通过引用传递(特别是在类定义中),除非您有合理的理由这样做。在创建类实例时,这是一种不好的做法(即,如果愿意,请使用“粘滞值”)。

您不能返回两次。“如果从函数中调用,返回语句将立即结束当前函数的执行,…”您可以在此处读到关于它的信息:您不能返回两次。“如果从函数中调用,return语句将立即结束当前函数的执行,…”您可以在此处阅读有关它的信息: