首页 > 解决方案 > 在 laravel 8 控制器中动态分配变量名的一部分

问题描述

我有一个数组,其中包含一些对应于不同传感器的测量值。这些测量值应存储在我的测量值表中。但我无法动态形成变量名。=> ${'请求->AI' 。'$ 计数器'};

有什么建议么?

$this->validateWith([
                        'RecorderName' => 'required|string',
                        'Time' => 'required|date',
                        'AI1' => 'required|float',
                        'AI2' => 'required|float',
                        'AI3' => 'required|float',
                        'AI4' => 'required|float',
                        'AI5' => 'required|float',
                        'AI6' => 'required|float']);

$recorderSenor = Recorder::where('name', substr($request->RecorderName, 0, -4))->with('getSensorsRelation')->get();

$counter =1;

foreach ($recorderSenor as $sensor) {
            $measurement = new measurement();
            $measurement->sensor_id = $sensor->id;
            $measurement->value = ${'request->AI' . '$counter'};
            $measurement->timestamp = $request->time;
            $measurement->save();
            $counter++;
        }

标签: phplaravel

解决方案


@DefinitelynotRafal 在评论中给出了正确答案。

echo '$counter'给你$counter(不是 $counter 的值,看这个)。尝试

$request->{'AI' . $counter}


推荐阅读