2016-08-22 15 views
-2

まず、配列をコレクションに変換してコレクションメソッドを使用できるようにしてから、このコレクションでいくつかのプロセスを実行します。 しかし、オフセットエラーがあります。 私のミスはどこにあるのか教えてください。未定義オフセット:laravelコレクション

public function MassTransferCh2Q1() 
{ 


    $a1 = range('1', '40', '0.3'); 
    $a2 = range('4', '44', '0.3'); 
    $a3 = range('1', '40', '0.5'); 
    $a4 = range('5', '45', '0.5'); 

    $calculated = []; 

    //calculate #36 Answers array 
    for ($i = 0; $i <= 35; $i++){ 

     $calculated[$i] = ($a1[$i]/($a1[$i]+$a2[$i]))*(-1*$a3[$i]) + ($a2[$i]/($a1[$i]+$a2[$i]))*($a4[$i]) ; 
     $calculated[$i] = $this->truncate_number($calculated[$i]); 

    } 

    //Convert $calculated Array to a Collection 
    $results = collect($calculated); 


    for ($i = 0; $i <= count($results); $i++){ 

     //select Correct answer 
     $correctAnswer = $results->only($i); 

     //delete correct answer from calculated collection, so $calculate collection will be equal to incorrect answers ... 
     $incorrectAnswers = $results->except($i); 

     //select 5 random item from incorrect answers collection 
     $randIncorrectAnswers = $incorrectAnswers->random(5); 


     $answerModel = New Answer(); 


     $answerModel->correct_ans = $correctAnswer; 
     $answerModel->question_id = '1'; 

     for($n = 0; $n <= 5; $n++){ 
      $answerModel['incorrect_ans_'.$i] = $randIncorrectAnswers[$n]; 
     } 

     $answerModel->save(); 


    } 
    return $results; 



} 
+0

どのラインにエラーがありますか? –

+0

'count($ results)'の代わりに '$ results-> count()'を使うと、 '<='から '<' –

答えて

1

私はあなたのコードをテストしていないが、それは、この行が間違っているように私には見えます:

for ($i = 0; $i <= count($results); $i++) 

と次のようになります。

for ($i = 0; $i < count($results); $i++) 

あなたは、インデックス0で始まり、結果が36個のアイテムを保持している場合、$ result [36]にアクセスしようとしていて、そのアイテムは存在しません。

関連する問題