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

实际上它会按如下方式工作。

$product_type = $product->type;


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


$price = $product->$price_field;
于 2010-06-05T20:21:10.123 回答
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 回答