原谅文字游戏。
我必须循环一个数组并求和它们的值,然后乘以价格(我已经知道该怎么做)。
该对象由称为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()
。
我认为我使用了错误的逻辑,但也许工作时间太长,看不到办法。
答案 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);
}