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

时间:2014-05-23 11:18:45

标签: 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
        ]
    }

在服务器端,我有两个表或迁移1表示问题,1表示答案。答案表有三个字段question_idanswer_text' and是正确的'。 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();
}

但迭代时出现错误

`production.ERROR: exception 'ErrorException' with message 'Trying to get property of non-object'`  

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

1 个答案:

答案 0 :(得分: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();
}

P.S。我不确定forEach - 我很惊讶它有效 - 但您应该将其重命名为foreach以确认正常标准