2012-05-15 41 views
0

我正在處理一個我沒寫並且不能改變的類的對象。這個類有很多屬性。我想循環約一半的這些屬性(選擇組)。我把需要的屬性名稱放到一個數組中,並希望循環它們。這可能嗎?什麼是語法?

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 - > $ VAL '或'$ 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之一通用電器■所有的方法和成員

0

你可以通過這樣的每個變量循環:

$b= new B(); 

foreach($b as $var => $value) { 
    echo "$var is $value\n"; 
} 
相關問題