Symfony 3.4: получить значение и сумму значений массива переменных переменных - PullRequest
0 голосов
/ 23 октября 2018

Простите за игру в слова.

Я должен циклически преобразовать массив и суммировать значения, затем умножить на цену (я уже знаю, как это сделать).

Объект составлениз 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 я получаю ошибку Notice: Undefined variable: $item[0]->getVal1().

Я думаю, что я использую неправильную логику, но, возможно, сработал так многовремя и не вижу пути.

1 Ответ

0 голосов
/ 23 октября 2018

Прежде всего, если у вас есть 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);
}
...