从类中返回特定值

时间:2017-05-31 08:58:42

标签: php class return

Add

快速提问,我正在学习PHP类,我试图将_first_name和_last_name分别从这个类中返回。

所以回显echo $ person1-> returnData();将返回名字,我如何单独返回第二个名字? echo $ person1-> returnData(" _last_name");这样的事情?但我知道错了!

7 个答案:

答案 0 :(得分:2)

流行的方法是在课堂上使用getter:

public function getFirstName()
{
    return $this->_first_name;
}

public function getLastName()
{
    return $this->_last_name;
}

示例:

echo $person1->getLastName() . ' ' . $person1->getFirstName();

如果要一次返回多个值,请使用array:

public function returnData()
{
    return [         
        'first_name' => $this->_first_name,
        'last_name' => $this->_last_name,
    ];
}

示例:

$personData = $person1->returnData();
echo $personData['first_name'] . ' ' . $personData['last_name'];

答案 1 :(得分:1)

您可以使用这种方式返回特定变量的值。

public function returnData($name)
{

    return $this->$name;

}

要获取任何变量的值,您可以通过$person1->returnData("_last_name");

获取它

对于名字,

echo $person1->returnData("_first_name");

对于第二个名字,

echo $person1->returnData("_last_name");

答案 2 :(得分:0)

你可以试试这个:

public function returnData()
{

    return array($this->_first_name, $this->_last_name);

}

// ...

list($firstName, $lastName) = $person1->returnData();
echo $firstName . ' ' . $lastName;

答案 3 :(得分:0)

你不能在这样的相同函数中返回2个值。

您必须返回一个数组或对象:

public function returnData(){
    return [
        'first_name' => $this->_first_name,
        'last_name' => $this->_last_name
    ];
}

$first_name = $person1->returnData()['first_name'];

答案 4 :(得分:0)

returnData()函数中有两个返回值:

public function returnData()
    {

        return $this->_first_name;
        return $this->_last_name;

    }

第二个不会被执行,因为该函数在frist之后退出。 请查看getter和setter - 您需要单独的属性单独的函数 - 或将它们作为数组返回。

答案 5 :(得分:0)

您无法直接按照自己的意愿行事。导致第一次返回将退出该功能。 然而,有多种方法可以解决这个限制,事实上这个问题已在这里得到解答:

Multiple returns from function

我相信它会对你有帮助。

答案 6 :(得分:0)

你的函数returnData()在遇到第一次返回后停止。 您应该创建两个单独的函数getFirstName和getLastName:

public function getFirstName() {
    return $this->_first_name;
}
public function getLastName() {
    return $this->_last_name;
}

您还可以创建一个带参数和if语句的函数来返回所需的值,但我不推荐它,因为它是一个不必要的测试。