nmk

Лабораторна робота №5 (2 години)

Тема: Зберігання та виведення статусу (Масиви). Моделювання списку завдань за допомогою багатовимірного масиву та їх виведення через цикл foreach.

Мета: Навчитись проєктувати та працювати з асоціативними та багатовимірними структурними даними, будувати динамічні HTML-списки на їх основі, використовуючи цикли.

Технологічний стек: PHP-масиви, цикл foreach, альтернативний синтаксис PHP для розширення HTML.

Завдання

  1. Ознайомитись з відмінностями між простими індексованими масивами та асоціативними масивами.
  2. Створити структурний “фейковий” (mock) багатовимірний масив із 4-5 елементів для зберігання списку завдань.
  3. Проітерувати (перебрати) масив у шаблоні за допомогою конструкції foreach, динамічно виводячи дані кожного завдання у власні HTML-елементи списку <li>.

Хід виконання роботи

Крок 1. Моделювання бази даних через масив

Замініть одиночні змінні $taskTitle, $isCompleted на початку вашого файла на єдину змінну $tasks — масив. Він повинен імітувати отримання кількох записів з бази даних. Використайте багатовимірну структуру: масив, що складається з асоціативних масивів. Кожен елемент має містити ключі: id, title, priority (High, Medium, Low), is_completed.

$tasks = [
    [
        'id' => 1,
        'title' => 'Виконати лабораторну роботу №5',
        'priority' => 'High',
        'is_completed' => false
    ],
    // Додайте ще мінімум 3 завдання з різними статусами
];

Крок 2. Використання циклу foreach

У блоці HTML <ul>, де раніше виводилось одне тестове завдання, видаліть старий код. Використовуйте альтернативний синтаксис: <?php foreach ($tasks as $task): ?> ... <li> ... </li> ... <?php endforeach; ?>. Цикл автоматично пройде по кожному елементу $tasks і згенерує окремий блок <li> для кожного.

Крок 3. Виведення атрибутів поточного завдання

В середині циклу кожне завдання доступне через псевдонім (наприклад, $task). Через синтаксис $task['title'] зверніться до відповідних значень і виведіть їх через <?= ?>. Застосуйте раніше створені функції: скорочуйте довгі заголовки через formatTitle($task['title']). Налаштуйте виведення різних CSS-класів (.task-done та .task-pending) у залежності від ключа $task['is_completed'].

Крок 4. Візуальне тестування

Відкрийте сторінку. Ви повинні побачити динамічний список завдань рівно тієї довжини, яка кількість елементів міститься в масиві у PHP-коді. Змінивши title чи is_completed у масиві, ви побачите їхні миттєві зміни і на сторінці після перезавантаження.

Контрольні запитання

  1. В чому принципова різниця між індексованими та асоціативними масивами в PHP? Наведіть фрагменти коду з прикладами.
  2. Які ключові компоненти містить цикл foreach? Чому його використання для масивів є кращим за цикл for?
  3. Що буде, якщо у foreach звернутися до ключа, якого не існує в асоціативному масиві (наприклад, $task['deadline'])?
  4. Для чого ми використовуємо альтернативний синтаксис endforeach; замість фігурних дужок } в HTML-шаблонах?
  5. Наведіть мінімум 3 приклади корисних вбудованих функцій PHP для роботи з масивами (наприклад, для кількості, сортування тощо) та коротко опишіть їх.

Вимоги до звіту

  1. Зберегти проєкт на платформі GitHub через git-коміт.
  2. Звіт (lab5.md) має містити структуру вашого згенерованого масиву $tasks як фрагмент PHP-коду.
  3. Скопіювати і додати фрагмент коду, де використовується цикл foreach в HTML-розмітці.
  4. Додати скриншот браузера з виведеним багаторядковим списком завдань.
  5. Написати розгорнуті відповіді на всі контрольні запитання у файл lab5.md.