PHP

Как выводить по 3 фото в строку

Логика решения достаточна проста. Мы собираем все нужные нам фотографии (картинки) для вывода, в один массив. Назовём массив $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);

?>

Урок закончен.
Добавлено: 23 Августа 2013 02:22:59 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...