2017-05-31 87 views
-1
class Member 
{ 
    private $_member_id; 
    private $_first_name; 
    private $_last_name; 

    public function __construct($member_id, $first_name, $last_name) 
    { 
     $this->_member_id = $member_id; 
     $this->_first_name = $first_name; 
     $this->_last_name = $last_name; 

    } 

    public function changeFirstName($new_first_name) 
    { 
     $this->_first_name = $new_first_name; 

    } 

    public function changeLastName($new_last_name) 
    { 
     $this->_last_name = $new_last_name; 
    } 

    public function returnData() 
    { 

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

    } 

} 

$person1 = new Member(43, "Tom", "Jones"); 
$person1->changeFirstName("James"); 

echo $person1->returnData(); 

快速問題,我正在學習PHP類,我試圖從這個類中分別返回_first_name和_last_name。從一個類返回一個特定值

所以echo echo $ person1-> returnData();將返回名字,我如何分開返回第二個名字? echo $ person1-> returnData(「_ last_name」);類似的東西?但我知道它錯了!

+0

返回具有值的數組。 –

+0

改爲使用特定的吸氣劑。 –

回答

1

您可以使用這種方式返回特定變量的值。

public function returnData($name) 
{ 

    return $this->$name; 

} 

要得到任何變量的值,可以通過$person1->returnData("_last_name");

對於第一個名字得到它,

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

對於第二個名字,

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

我最喜歡這種方法,因爲它減少了代碼數量,所以謝謝! :-D – yetteh

2

流行的做法是在課堂上使用干將:

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

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

例子:

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

如果你想在同一時間返回多個值,然後使用數組:

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

例如:

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

正是我在想什麼! '+ 1' – Akintunde007

0

你可以試試這個:

public function returnData() 
{ 

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

} 

// ... 

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

你不能像這樣同一個函數返回2個值。

您必須返回一個數組或對象:

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

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

你必須在returnData()函數的兩個回報:

public function returnData() 
    { 

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

    } 

第二個將不會得到執行,因爲函數弗里斯特後退出。 請看看getter和setter - 你需要單獨的屬性單獨的函數 - 或者將它們作爲一個Array返回。

0

你不能直接做你想做的事。導致第一個返回將退出該函數。 但也有多種方法可以解決這個限制,事實上這樣的問題已經在這裏找到答案:

Multiple returns from function

我敢肯定,它會幫助你。

0

函數returnData()在遇到第一次返回後停止。 您應該創建兩個單獨的函數的getFirstName和getLastName:

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

你也可以創建一個參數的功能,如果語句返回值所需要的,但我不建議這樣做,因爲這將是一個不必要的測試。

相關問題