2016-08-22 117 views
-2

首先,我将一个数组转换为一个集合以便能够使用收集方法,然后对此集合执行一些处理...但是存在偏移错误! 你能告诉我我的错误在哪里?未定义偏移量:0在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

使用'$ results-> count()'而不是'count($ results)',同时将'<='改为'<' –

回答

1

我没有测试你的代码,但在我看来,这条路线是错误的:

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

,应该是:

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

你开始索引为0,如果结果包含36项,则试图访问$ result [36],并且该项不存在。