Вопрос:

Неопределенное смещение: 0 в коллекции Laravel

php laravel collections

867 просмотра

1 ответ

19 Репутация автора

во-первых, я преобразовываю массив в коллекцию, чтобы иметь возможность использовать методы коллекции, а затем выполняю некоторые процессы в этой коллекции ... но есть ошибка смещения! Не могли бы вы сказать мне, где моя ошибка?

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;



}
Автор: Sami Источник Размещён: 22.08.2016 08:57

Ответы (1)


2 плюса

214 Репутация автора

Я не проверял ваш код, но мне кажется, что эта строка неверна:

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

и должно быть:

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

Вы начинаете с индекса 0, если результат содержит 36 элементов, вы пытаетесь получить доступ к $ result [36], а этот элемент не существует.

Автор: Saskia Размещён: 22.08.2016 09:17
32x32