Mam tablicę, która zawiera linki do zdjęć i opisy obrazków. Chciałbym wyświetlić je w dwóch kolumnach, stąd do szablonu HTML chciałbym przekazać 2 zmienne i wykonać na nich polecenie @foreach (korzystam z Laravela i jego szablonów blade.php).
Także, przygotowując opakowane dane do przekazania dla szablonu, muszę mieć dwie zmienne, każda zawierająca połowę zdjęć.
Mogę to zrobić klasycznie, pętlą for i iterować połowę, wpisując do jednej tablicy, później kolejna pętla for z iteracją od połowy danych do końca tablicy.
Nie wiem, czy w PHP dałoby się to zrobić po prostu szybciej i prościej?
1 Odpowiedź
Generalnie w PHP są trzy natywne funkcje operujące na tablicach, które mogą wykonać Twoje zadanie: array_slice, array_splice i array_chunk.
Najszybszym i najlepszym wyborem wydaje się być array_chunk – szczególnie liczba elementów w tablicy jest parzysta. Wtedy masz sprawę prostą, w przeciwnym wypadku wchodzi kwestia zaokrąglania liczby elementów do wydzielenia.
Generalnie, array_chunk dzieli tablicę na części (mniejsze osobne tablice), zawierające dokładnie tyle elementów, ile podasz w argumencie.
Mając przykład:
<?php $tablica = array('a', 'b', 'c', 'd', 'e', 'f'); $arrays = array_chunk($tablica, 3);
W zmiennej $arrays dostaniesz dwie tablice trzyelementowe. Teraz trójkę musisz zastąpić wyliczoną liczbą, która będzie połową elementów tablicy wejściowej. Np. ceil(count($tablica) / 2)
co zaokrągli wyliczoną połowę w górę.
Jeśli zaokrąglisz w dół, może się okazać, że otrzymasz 3 tablice wynikowe, z których ostatnia będzie miała tylko jeden element.