未定义的偏移量:1,在循环中出现此错误

时间:2018-08-14 16:13:55

标签: html laravel

我有以下代码:

$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}}">

如何在控制器中接收此值?

2 个答案:

答案 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;
   }    
}