PHP Список элементов массива в таблице Строки из 3

Я видел пару примеров того, о чем я думаю, но они не совсем то, что я ищу... извинения, впереди, если это дубликат сообщения:

Итак, у меня есть эта функция, которая читает элементы в массиве, которые я добавляю регулярно (в настоящее время у меня более 50 элементов в списке). Он помещает все в список (<ul> ).

function getListItems()
{
$listItems = array(
    1 => "List Item 1",
    2 => "List Item 2",
    3 => "List Item 3",
    4 => "List Item 4",
    5 => "List Item 5",
    6 => "List Item 6",
    7 => "List Item 7",
    8 => "List Item 8",
    9 => "List Item 9",
    10 => "List Item 10",
    11 => "List Item 11",
    12 => "List Item 12",
    13 => "List Item 13",
    14 => "List Item 14",
    15 => "List Item 15",
);

$fullList = "<ul>";
foreach($listItems as $itemId=>$itemName)
{
    $fullList .= "<li><a href='somePage.php?id=" .$itemId. "'>" .$itemName. "</a></li>";
}
$fullList .= "</ul>";
return $fullList;
}

НО, что я хотел бы сделать, в конечном счете, создать способ отображения его в таблице, на экране в строках из трех...

Вместо того, что он делает в данный момент, и просто перечисляя все, что вам нужно прокрутить "навсегда".

Это - это то, что я в настоящее время выводят... (да, это несколько мобильное устройство).

Ответ 1

Я бы использовал CSS - в частности свойство count-count.

Взгляните на это руководство, чтобы увидеть, как работают столбцы CSS: https://css-tricks.com/guide-responsive-friendly-css-columns/

Примечание. Это НЕ PHP.

Вот скрипка, показывающая, что это работает с чем-то вроде вывода вашего кода.

http://jsfiddle.net/j86fu084/

ul{
  -webkit-column-count: 2;
     -moz-column-count: 2;
          column-count: 2;
}

Вы также можете добавить класс к элементу UL и использовать стили CSS, используя это.

Ответ 2

Чтобы сделать что-то подобное без таблиц (что позволит ему реагировать), вы должны сделать это:

PHP

function getListItems()
{
    $listItems = array(
        1 => "List Item 1",
        2 => "List Item 2",
        3 => "List Item 3",
        4 => "List Item 4",
        5 => "List Item 5",
        6 => "List Item 6",
        7 => "List Item 7",
        8 => "List Item 8",
        9 => "List Item 9",
        10 => "List Item 10",
        11 => "List Item 11",
        12 => "List Item 12",
        13 => "List Item 13",
        14 => "List Item 14",
        15 => "List Item 15",
    );

    $fullList = "<div id='myList'>";
    foreach($listItems as $itemId => $itemName)
    {
        $fullList .= "<span><a href='somePage.php?id={$itemId}'>{$itemName}</a></span>";
    }
    $fullList .= "</div>";
    return $fullList;
}

CSS

#myList, #mylist>* {
    -webkit-box-sizing: border-box;
       -moz-box-sizing: border-box;
            box-sizing: border-box;
}

#myList {
    display: block;
    width: 100%;
}

#myList>span {
    display: inline-block;
    width: 33%;
}

/* mobile stylesheet */
@media(max-width: 600px) {
    #mylist>span {
        width: 100%;
    }
}

Совет: заставить мобильные устройства использовать ширину экрана 320 пикселей и отключить масштабирование (необязательно)

<meta name="viewport" content="width=320, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0,target-densitydpi=device-dpi, user-scalable=no" />

Вы можете пометить промежутки, чтобы они выглядели как таблицы, а столбцы будут одинаковой ширины. Свойство box-sizing сделает так, чтобы при вычислении ширины элемента не учитывались поля и границы. Нет строк, поэтому ширина столбцов не только текучая, но вы можете уменьшить до 1 столбца для небольших экранов и даже выполнять точки останова для мониторов большого размера.