$对象 - >($字符串)

时间:2012-05-15 19:56:12

标签: php

我正在处理一个我没写过但不能改变的类的对象。这个类有很多属性。我想循环使用这些属性中的大约一半(选择组)。我将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
}

4 个答案:

答案 0 :(得分: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 :(得分:1)

echo $b->$val;

或方法

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

你可以使用其中一个reflection functions来获取所有方法和成员

答案 2 :(得分:1)

你很亲密:

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

答案 3 :(得分:0)

你可以循环遍历每个变量:

$b= new B();

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