2017-05-31 2 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();最初の名前が返されますが、別の名前を戻すにはどうすればよいですか?エコー$ person1-> returnData( "_ last_name");そんな感じ?しかし、私は間違いを知っている!

+0

値を含む配列を返します。 –

+0

代わりに特定のゲッターを使用してください。 –

答えて

1

この方法で特定の変数の値を返すことができます。

public function returnData($name) 
{ 

    return $this->$name; 

} 

任意の変数の値を取得するには、あなたは、最初の名前について$person1->returnData("_last_name");

で2番目の名前については

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

あなたはこれを試すことができます:あなたはこのように同じ関数で2つの値を返すことはできません

public function returnData() 
{ 

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

} 

// ... 

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

あなたは、配列やオブジェクトを返す必要があります。

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

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

あなたはreturnData()機能に2つの戻りいる:関数は延期した後、終了したために二つ目は、

public function returnData() 
    { 

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

    } 

を実行し得ることはありません。 ゲッターとセッターを見てください。別々のプロパティに別々の関数が必要です。あるいは、それらをArrayとして返すようにしてください。

0

あなたがすることはできませんあなたが望むように直接行います。最初の戻り値は関数から終了するためです。 しかしその制限を回避するために、複数の方法があり、Infactは、このような質問はすでにここ答えた:

Multiple returns from function

を、私はそれはあなたを助けると確信しています。

0

関数returnData()は、最初に返された後に停止します。あなたはまた、パラメータで一つの関数を作成することができると記述が必要な値を返す場合、それがに、不要なテストになるので、私はそれをお勧めしません

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

: 次の2つの別々の機能getFirstNameおよびgetLastNameのを作成する必要があります。

関連する問題