循环遍历一个对象数组并在laravel PHP中获取值

Saj*_*mad 1 php arrays laravel laravel-4 laravel-3

我正在开发一个QA应用程序,我需要根据需要动态地添加问题的多个答案.为此,我发送一个带有问题和答案的对象.

question={
    'question_text':'what is your name',
    'answers':[
            {'answer_text':'some answer','isCorrect':'1'},
            {'answer_text':'some answer','isCorrect':'1'},
            {'answer_text':'some answer'}    // answer may or may not have isCorrect key
        ]
    }
Run Code Online (Sandbox Code Playgroud)

在服务器端,我有两个表或迁移1用于问题,1用于回答.答案表有三个字段 question_id,answer_text' andisCorrect'.question_id是答案表中问题的外键.

存储我正在做的对象

$question_text=Input::get('question_text');
$answers=Input::get('answers');

$question=new Question;
$question->question_text=$question_text;
$question->save();


foreach($answers as $ans){ 
   $answer=new Answer;
   $answer->question_id=$question->id;
   $answer->answer_text=$ans->answer_text;
   if($answer->isCorrect){
        $answer->is_correct=$ans->isCorrect;
   }
   else{
        $answer->is_correct=0;
   }
   $answer->save();
}
Run Code Online (Sandbox Code Playgroud)

但是迭代时会出现错误

`production.ERROR: exception 'ErrorException' with message 'Trying to get property of non-object'`  
Run Code Online (Sandbox Code Playgroud)

我在这做什么错.我是第一次使用PHP.我试图像Javascript或Python方式迭代它.告诉我如何获取答案数组对象的值并存储它们.

Lau*_*nce 5

您似乎没有正确引用数组变量.这应该工作:

foreach($answers as $ans){ 
   $answer=new Answer;
   $answer->question_id=$question->id;
   $answer->answer_text=$ans['answer_text'];
   $answer->is_correct = isset($ans['isCorrect']);
   $answer->save();
}
Run Code Online (Sandbox Code Playgroud)

ps我不确定forEach- 我很惊讶它有效 - 但你应该重命名它foreach以确认正常标准