未定义的偏移量:laravel集合中的0

时间:2016-08-22 20:57:27

标签: php laravel collections

首先,我将数组转换为集合以便能够使用集合方法,然后对此集合执行一些处理... 但是有一个偏移错误! 你能告诉我我的错误在哪里吗?

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;



}

1 个答案:

答案 0 :(得分:2)

我没有测试你的代码,但我认为这条线路是错误的:

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

应该是:

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

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