- Подробности
-
Категория: PHP. Графика
Логика решения достаточна проста. Мы собираем все нужные нам фотографии (картинки) для вывода, в один массив. Назовём массив $arr. Далее используя встроенную функцию PHP array_chunk($arr, $num), делим массив на нужное количество элементов.
array array_chunk ( array input, int size [, bool preserve_keys])
array_chunk() делит массив на несколько массивов с size количеством значений в них. В конце может получиться массив с меньшим количеством значений. Вы можете получать эти массивы как члены многомерного массива, индексированного числами, начиная с 0.
Установив необязательный параметр preserve_keys в TRUE, вы можете заставить PHP сохранить оригинальные ключи массива ввода. Если вы специфицировали FALSE, будут использованы новые числовые индексы в каждом результирующем массиве с индексированием, начиная с нуля. По умолчанию FALSE.
Листинг № 1 — Делим массив $arr на массивы с заданным количеством значений в каждом массиве. В зависимости от количества значений в массиве $arr, сформируется разное количество массивов с заданным количеством элементов в каждом из них.
<?php
$arr = array('1.gif', '2.gif', '3.gif', '4.gif', '5.gif', '6.gif');
$arr2 = array_chunk($arr, 3);
for($i=0; $i < count($arr2); $i++)
{
for($j=0; $j < count($arr2[$i]); $j++)
{
echo '<img src="/images/'.$arr2[$i][$j].'">';
}
echo '<br><br>';
}
?>
Ниже представлена функция, первый аргумент которой принимает массив (array), второй аргумент целое число (int), который и определяет количество фоток на одну строку.
Листинг № 2 — Функция для вывода построчно, определённого количества картинок на одной строке.
<?php
// Функция форматирования фотографий по строкам
function chunk_img($arr, $num)
{
if(is_array($arr))
{ // если аргумент массив, то скрипт исполняется
$arr2 = array_chunk($arr, $num);
for($i=0; $i < count($arr2); $i++)
{
for($j=0; $j < count($arr2[$i]); $j++)
{
$t .= '<img src="/images/'.$arr2[$i][$j].'">';
}
$t .= '<br><br>';
}
return $t; // возвращает отформатированную строку с фотографиями
}
else
{
return false;
}
}
echo chunk_img($arr, 2);
?>
Скачать урок "Вывести по три фотографии на каждую строку"
Урок закончен.