Symfony 3.4:获取值和求和变量数组的值

时间:2018-10-23 16:43:45

标签: php symfony for-loop doctrine symfony-3.4

原谅文字游戏。

我必须循环一个数组并求和它们的值,然后乘以价格(我已经知道该怎么做)。

该对象由称为val1,val2,val3等的64个字段组成。每个字段都有一个带有数量值的simple_array。

我使用学说从数据库中获取这些数据。

    $item = $this->getDoctrine()->getRepository(ExpertationsAdvanced::class)->findBy(['father' => $id]);

    dump($item[0]->getVal1());

        for($i = 1; $i < 64; $i++) {
            dump(${'$item[0]->getVal' . $i . '()'});
            $i++;
            if(${'$item[0]->getVal' . $i . '()'} == null) {
                $return = '0';
            } else {
                $return = array_sum(${'$item[0]->getVal' . $i . '()'} );
            }

            dump($return);
        }

第一个转储返回我所请求的数组,没有问题,但是在for循环中,我得到了错误的Notice: Undefined variable: $item[0]->getVal1()

我认为我使用了错误的逻辑,但也许工作时间太长,看不到办法。

1 个答案:

答案 0 :(得分:0)

首先,如果您有64个字段,则应该具有(有关详细信息,请阅读docs

for($i = 1; $i <= 64; $i++) {

第二,您无需在循环内递增$i

$i++;

要获取值:

$item[0]->{"getVal{$i}"}();
// OR
$method = "getVal{$i}";
$item[0]->$method();

结果将是:

for($i = 1; $i <= 64; $i++) {
    $array = $item[0]->{"getVal{$i}"}();

    $return = is_array($array) ? array_sum($array) : 0;
    dump($return);
}