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...);

リフレクション関数の 1 つを使用して、すべてのメソッドとメンバーを取得できます。

于 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 に答える