2

私のコードのある部分では、次のようなものが必要です。

$product_type = $product->type;
$price_field = 'field_'.$product_type.'_price';
$price = $product->$$price_field;

言い換えれば、私は一種のKVCが必要です-実行時に生成されたフィールド名でオブジェクトフィールドを取得することを意味します。既存のシステムを拡張し、フィールドの命名規則を維持する必要があるだけなので、代わりにフィールド名を変更するようにアドバイスしないでください。

次の方法で簡単に実行できる場合、このようなものが配列で機能することを私は知っています。

$price = $product[$price_field_key].

したがって、配列のキーを動的に生成できます。しかし、オブジェクトに対してそれを行う方法は?グーグルが配列などの結果の川を私に与えるので私を助けてください...ありがとう

4

4 に答える 4

5
$price = $product->{$price_field};
于 2010-06-05T20:00:51.580 に答える
2

みんなごめんなさい。思ったよりずっと楽でした。うまくいけば、それは誰かを助けるでしょう。簡単に言えば:

$price_field = 'field_'.$product_type.'_price';
$price = $product->$price_field;

したがって、varialbeを使用してPhpのオブジェクトフィールドを取得できます。

私はそれらの$$で遠くまで行きました;-)

よろしく

于 2010-06-05T19:59:44.257 に答える
1

get_object_varsを使用するのはどうですか?

$price_field = 'field_'.$product_type.'_price';
$instvars = get_object_vars($product);
$price = $instvars[$price_field];
于 2010-06-05T19:59:55.170 に答える
1

実際には次のように動作します。

$product_type = $product->type;


$price_field = "field_".$product_type"._price";


$price = $product->$price_field;
于 2010-06-05T20:21:10.123 に答える