在这种情况下,如何在Magento中从自定义集合获取/设置值


How to get/set value from custom collection in this case in Magento

在我的自定义模块控制器中,我有一种情况要创建具有已发布属性的函数

$params = $this->getRequest()->getParams();
$details = Mage::getModel('custom/custom')->load($params['id']);

$params阵列看起来像这个

Array
(
    [product_id] => 3
    [id] => 82
    [value] => 20
)

$params['value']是我在下面的数组中的列名之一

$details阵列看起来像这个

Array
(
    [id] => 82
    [18] => 1
    [18_price] => 100.000
    [19] => 4
    [19_price] => 200.000
    [20] => 5
    [20_price] => 100.000
    [21] => 8
    [21_price] => 200.000
    [22] => 0
    [22_price] => 0.000
    .
    .
    .
    .
    [product_id] => 3
)

如果我使用$details->get20(),我将从上面的数组中获得$details['20']的值,即5,

每次我不能使用像$details->get20()$details->get21()$details->get22()这样的标准函数,因为我将有20到30列这样的列,所以我想使用$params['value']创建这个函数,这不仅仅是为了再次获得方法,我必须在逻辑的几行之后在同一位置设置值。

为此,我尝试了以下方法

$details->get.''.$params['value']();
$details->get.$params['value']();

但它没有用致命错误:调用未定义的函数20()

在我的情况下,我该如何做到这一点?

在尝试调用变量之前,必须将其设置为函数名:

$function = 'get' . $params['value'];
$details->$function();

或者你可以这样做:

$details->{'get' . $params['value']}();