首页 > 解决方案 > Symfony 3.4:获取值和求和变量变量数组值

问题描述

原谅文字游戏。

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

该对象由 64 个字段组成,称为 val1、val2、val3 等。每个字段都有一个带有数量值的 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循环中,我得到 erro Notice: Undefined variable: $item[0]->getVal1()

我想我使用了错误的逻辑,但可能工作时间太长了,看不到方法。

标签: phpsymfonyfor-loopdoctrinesymfony-3.4

解决方案


首先,如果你有 64 个字段,你应该有(阅读文档了解更多信息):

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

推荐阅读