2012-05-15 2 views
0

필자는 쓰지 않았고 변경할 수없는 클래스의 개체를 다루고 있습니다.이 클래스에는 매우 많은 수의 특성이 있습니다. 나는이 속성의 약 절반을 골고루 순환시키고 싶다. nescessary 속성의 이름을 배열에 넣고이를 순환시키고 싶습니다. 이것이 가능한가? 어떤 문법입니까?

class B{ 
    public $foo = 'hi'; 
    public $bar = 'bye'; 
    ...etc, etc. 
} 

$arr = array(1=>'foo', 2=>'bar', ...) 
$b = new B(); 
foreach($arr as $val){ 
    echo $b->($val); //<-----does not work 
} 
+3

이 제거'()''$ B를 같은 -> $ 발 '$ b -> {$ val}' –

+1

괄호 대신 {{$ val}} 중괄호를 사용해야합니다 ... – animuson

+0

[배열을 반복하고 키와 값을 가져올 수 있습니다] (http : // stackoverflow.com/questions/3753394/iterate-through-array-and-get-key-and-value) – legoscia

답변

1

당신은 가까웠다 :

$b->$val; //Or... 
$b->{$val}; 
5

예. 가능합니다. 수동 참조 : http://php.net/manual/en/language.variables.variable.php

<?php 
class foo { 
    var $bar = 'I am bar.'; 
} 

$foo = new foo(); 
$bar = 'bar'; 
$baz = array('foo', 'bar', 'baz', 'quux'); 
echo $foo->$bar . "\n"; 
echo $foo->$baz[1] . "\n"; 
?> 

상기 예제 출력 :

I am bar. 
I am bar 
1
echo $b->$val; 

또는 방법

echo $b->$val(params...); 

및 u는 상기 reflection functions 중 하나를 사용하여 GE t 모든 방법과 회원

0

할 수 있습니다과 같이 각 변수를 통해 루프 :

$b= new B(); 

foreach($b as $var => $value) { 
    echo "$var is $value\n"; 
} 
관련 문제