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
}
4

4 回答 4

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
于 2012-05-15T19:58:27.453 回答
1
echo $b->$val;

或方法

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

你可以使用反射函数之一来获取所有的方法和成员

于 2012-05-15T19:59:31.040 回答
1

你很接近:

$b->$val; //Or...
$b->{$val};
于 2012-05-15T20:01:23.147 回答
0

您可以像这样遍历每个变量:

$b= new B();

foreach($b as $var => $value) {
    echo "$var is $value\n";
}
于 2012-05-15T20:00:56.937 回答