2012-05-15 43 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"; 
} 
相关问题