@KorLagar

Вопрос по массивам, как создать по заданным критериям?

Всем привет, столкнулся с такой задачей во время изучения php, подскажите решение.
Необходимо создать единственный массив $data, и придумать его структуру таким образом, чтобы можно было удобно хранить информацию по авторам и книгам в библиотеке.

Для книги нужно хранить следующую информацию: Название, Год выпуска.
Для автора нужно хранить следующую информацию о нем: Имя, Email, Год рождения

Набор полей в будущем может расширяться.

Требуется заполнить этот массив не менее чем 3-мя авторами и 5-ю книгами.

Вывести следующую информацию на сайте:

1. Выведи строку: === Книги ===
2. Выведите все книги на сайте. Каждая книга должна быть на отдельной строке, при этом формат вывода должен быть следующий:

Название книги – Имя автора - год выпуска книги.

3. Выведи строку: === Авторы ===
2. Выведите всех авторов на сайте. Каждый автор должен быть на отдельной строке, при этом формат вывода должен быть следующий:

Имя автора – его email – его год рождения.

Например:
=== Книги ===
Мертвые души – Николай Васильевич - 1841
Вий – Николая Васильевич - 1834
Пиковая дама - Пушкин - 1833

=== Авторы ===
Николай Васильевич – nikolay@gogol.ru - 1809
Пушкин – alexandr@pushkin.ru - 1799

Для решении задачи запрещено использовать функции, анонимные функции, преобразование типов, классы, базу данных, другие переменные, кроме $data.
  • Вопрос задан
  • 3350 просмотров
Пригласить эксперта
Ответы на вопрос 1
@Nikidze
Задача тривиальная, если с решением туго - у меня для вас плохие новости.
<?php
$data = array(
        'books' => [],
        'authors' => []
    );

function addAuthor($name, $email, $db){
    global $data;
    $data['authors'][] = array('name' => $name, 'email' => $email, 'db' => $db);
};
function addBook($title, $authorId, $year){
    global $data;
    $data['books'][] = array('title' => $title, 'author' => &$data['authors'][$authorId], 'year' => $year);
};

addAuthor('Пушкин', 'почта@пушкина', '1799'); // id = 0
addAuthor('Гоголь', 'почта@гоголя', '1809'); // id = 1

addBook('Вий', 1, 1834);
addBook('Другая книга Гоголя', 1, 1835);
addBook('А эту написал Пушкин', 0, 1820);

echo "===========Книги===============";
foreach($data['books'] as $book){
    echo $book['title'].' - '.$book['author']['name'].' - '.$book['year'].'<br>';
}
echo '===========Авторы===============';
foreach($data['authors'] as $authors){
    echo $authors['name'].' - '.$authors['email'].' - '.$authors['db'].'<br>';
}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
Бюро Цифровых Технологий Санкт-Петербург
от 120 000 до 180 000 ₽
01 мая 2024, в 14:56
1000 руб./в час
01 мая 2024, в 14:51
50000 руб./за проект
01 мая 2024, в 14:34
3000 руб./за проект