2013-02-19 2 views
0

여기에 PHP는 n00b :PHP에서 메소드에서 변수와 배열을 반환하려면 어떻게해야합니까?

나는 갑판에서 카드를 선택하려고합니다.

클래스 인스턴스가 '$ test_1'이고 'pick_card'함수가 해당 클래스의 메소드입니다.

나는 1) 원하는 카드와 2) 데크가 적은 카드를 반환하고 싶습니다.

어디로 잘못 가고 있습니까?

$card, $deck = $test_1->pick_card($play_deck); 

public function pick_card(&$deck) 
{ 
    $card = $deck[0]; 
    echo "picked this card: " . $card . "<br />"; 
    array_splice($deck,0,0); 
    return $card; $deck; 
} 
+2

필요성을 사용할 수 있습니다 : 당신은 연관 배열을 사용하거나 다음과 같이 변수로 다시 아웃 배열을 깰 list을 사용할 수 있습니다 반환 배열? '$ ($ card, $ deck);를 반환하고'list ($ card, $ deck) = func();를 사용하여 다시 검색하십시오. – Federkun

답변

3

: 나는 당신이 당신의 pick_card 기능에 deck[0]를 사용하는 것처럼, 배열에 익숙 생각합니다. 참조로 함수에 $deck을 전달한다는 점에 유의하십시오. 따라서 해당 변수에 대한 모든 수정 사항이 함수에서 작동 할 때 해당 변수에 반영됩니다.

이것은 클래스이기 때문에 실제로 변수를 전달할 필요는 없으며 실제로 데크를 저장하는 속성이 있어야합니다. 다음과 같이 제안합니다 :

+0

고마워요! 클래스가 인스턴스화되면 $ deck에 어떻게 접근합니까? – dwstein

+0

@dwstein 개인적으로'$ this-> deck'을 반환하는 get_deck() 메소드를 추가하는 것이 좋겠지 만'$ this-> deck'을 public으로 만들고 속성에 직접 액세스 할 수도 있습니다. 개인적으로 getters/setter를 통해 클래스 외부의 속성에 대한 액세스를 제한하는 것을 선호합니다. 나는 속성에 직접 접근하는 코드에서 많은 수의 장소가 없다면 get/set 논리를 변경하는 것이 더 쉬워진다. –

+0

대단히 고마워요! – dwstein

0

연관 배열에서 필요한 값을 반환 할 수 있습니다. 당신은 PHP에서처럼 두 개의 변수를 반환 할 수

class Foo{ 
    public function pick_card(&$deck){ 
     $card = $deck[0]; 
     echo "picked this card: " . $card . "<br />"; 
     array_splice($deck,0,0); 
     return array('card'=>$card,'deck'=>$deck); 
    } 
} 
$test_1 = new Foo; 
$deck = $test_1->pick_card($play_deck); 
echo 'Card: '.$deck['card'].'<br>'; 
echo 'Deck: '.$deck['deck']; 
2

배열로 반환해야합니다. 객체를 가지고 있기 때문에

list($card, $deck) = $test_1->pick_card($play_deck); 

public function pick_card(&$deck) 
{ 
    $card = $deck[0]; 
    echo "picked this card: " . $card . "<br />"; 
    array_splice($deck,0,0); 
    return array($card, $deck); 
} 
1

당신은 또한에 $this

class card_deck { 
    public $card; 
    public $deck; 
    public function pick_card(&$deck) { 
    $this->card = $deck[0]; 
    $this->deck = $deck; 
    echo "picked this card: " . $this->card . "<br />"; 
    array_splice($this->deck,0,0); 
    } 
} 

$test_1 = new card_deck(); 
//set $play_deck 
$test_1->pick_card($play_deck); 

// now use 
$test_1->card; 
$test_1->deck; 
관련 문제