0

Предпринимаю попытки познать прелести работы с Laravel, а конкретно с его коллекциями. Вопрос вроде простой, но почему-то не нашёл на него ответа в интернете, что конкретно возвращает метод chunk()? Я конспектирую и параллельно проверяю работу методов. Вот, что написано в мануалах по этому методу: Метод chunk разбивает коллекцию на несколько меньших коллекций указанного размера:

$collection = collect([1, 2, 3, 4, 5, 6, 7]);

$chunks = $collection->chunk(4);

$chunks->all();

// [[1, 2, 3, 4], [5, 6, 7]]

однако, на этапе проверки, я получил следующее:

<?php

namespace App\Http\Controllers;

class CollectionController extends Controller { $all = collect([1,2,3])->all(); $average = collect([1,2,3])->avg(); $chunk = collect([1,2,3,4,5,6])->chunk(2); return view('collection.show', ['title' => 'this title', 'all' => $all, 'avg' => $average, 'chunk' => $chunk]); } }

<x-layout>
    <x-slot name="title">
        {{ $title }}
    </x-slot>
    <ul>
        @foreach($all as $elem)
        <li>{{ $elem }}</li>
        @endforeach
    </ul>
    {{ $avg }}
    <ul>
        @foreach($chunk as $elems)
        <li>{{ $elems }}</li>
        @endforeach
    </ul>
</x-layout>

Результат работы кода в браузере:

введите сюда описание изображения

UPD: Спустя какое-то время до меня дошло, что это ключи. Хотя такую форму записи я вижу впервые. Вопрос такой: почему их нет в первом подмассиве и как сделать так, чтобы их не было в остальных?

Vadim
  • 29
  • чанк делает двумерный массив.... для двумерного массива надо два цикла, а не один........взял бы, да дебагом посмотрел бы в переменную и увидел бы что в нём и сделал бы вывод – Алексей Шиманский Apr 23 '23 at 17:26
  • @АлексейШиманский зачем мне 2 цикла? Я вывел то, что и хотел: каждый подмассив в своей li. Не понял только почему в первом подмассиве нет ключей, а в остальных есть. – Vadim Apr 23 '23 at 17:35
  • @АлексейШиманский и можно немного подробнее про "дебагом посмотре бы в переменную", может мне пригодится, но я не знаю что это – Vadim Apr 23 '23 at 17:36
  • https://ru.stackoverflow.com/a/701146/191482 – Алексей Шиманский Apr 23 '23 at 17:46
  • 2
    в первом ключи начинаются с нуля. в других - не с нуля.... когда не с нуля идёт нумерация - в браузере это интерпретируется как ассоциативный массив...а в браузере ассоциативный массив - это объет......в итоге для отображения есть пути: либо на сервере для каждого массива сделать array_values либо в шаблоне делать два цикла ... как я уже сказал....и формировать самому вывод в нужном формате, где ключей не будет – Алексей Шиманский Apr 23 '23 at 17:47
  • возможно в методе laravel есть флаг, аналогичный нативному в PHP https://www.php.net/manual/ru/function.array-chunk.php .... который позволит сразу сформировать массивы всегда с индексами, начинающиеся с нуля....надо просто в доки посмотреть... если нет - печально)) – Алексей Шиманский Apr 23 '23 at 17:53
  • @АлексейШиманский теперь понял, звучит логично. Спасибо большое за ссылку и за объяснение! В тех мануалах. которые я чситаю ничего про флаг для chunk() нету – Vadim Apr 23 '23 at 17:53

0 Answers0