我有以下代码:
$datas = $request->all();
if (!empty($datas)){
for ($i=1; $i<count($datas); $i++){
$value = [
'questionnaire_id' => $datas[$i]->questionnaires_id,
'question_id' => $datas[$i]->id,
'answer' => $datas[$i]->key
];
return $value;
}
}
我遇到错误:
Undefined offset: 1
使用输入形式:
<input type="" name="{{$question->id}}" value="{{$key}}">
如何在控制器中接收此值?
答案 0 :(得分:1)
您假设$ datas是一个从索引1开始没有间隔的数字数组。那可能不是最好的假设。
根据我对request()->all()
的了解,它将返回所有用户输入的关联数组,因此您将无法访问$ datas上的$ i键。仅仅因为它可能有1个元素,并不意味着数组上的索引将为1。
也许您想检索特定的用户输入,例如,如果您有一个名为checkbox
的复选框,则可能要使用request()->input('checkbox')
而不是request()->all()
,但是我想仍然假设您的数组键将从0而不是1开始。
当所有其他方法均失败时,设置一个断点并使用调试器查看$ datas的值。如果您没有调试器(强烈建议您使用),则可以使用dd($datas);
来死掉并转储值。
答案 1 :(得分:0)
您可以尝试初始化变量i = 0
。还要进行dd($datas)
来查看您的评估。
$datas = $request->all();
if (!empty($datas)){
for ($i=0; $i<count($datas); $i++){
$value = [
'questionnaire_id' =$datas[$i]->questionnaires_id,
'question_id' =$datas[$i]->id,
'answer' =$datas[$i]->key
];
return $value;
}
}