Проблема такая, есть многомерный массив, с двумя ключами AUTHORS и BOOKS, в этих ключах еще вложены массивы, ключами для авторов являются их емэйлы чтобы на основе email автора у книги можно было получить автора
Вот собственно говоря код:
$result3 = [
'AUTHORS' => [
'pasha12316@ya.ru'=>[
'fio' => 'Pavel Kharchenko',
'email_author' => 'pasha12316@ya.ru',
'year_of_birth' => '1990'
],
'alex6@ya.ru'=>[
'fio' => 'Alex York',
'email_author' => 'alex6@ya.ru',
'year_of_birth' => '1991'
],
'antony@ma.ru'=>[
'fio' => 'Anton Svyaz',
'email_author' => 'antony@ma.ru',
'year_of_birth' => '1992'
]
],
'BOOKS' => [
'pasha12316@ya.ru'=>[
'title' => 'Progressive',
'email_book' => 'pasha12316@ya.ru'
],
'alex6@ya.ru'=>[
'title' => 'Interactive',
'email_book' => 'alex6@ya.ru'
],
'antony@ma.ru'=>[
'title' => 'Combination',
'email_book' => 'antony@ma.ru'
]
]
];
Итогом всего, я хочу вывести по порядку в цикле информацию про книги и авторов: Существует книга "title", автор ее "fio", родился "year_of_birth"
т.к у меня 3 автора и 3 книги, результат должен расположится на 3х строках
Я вывел всю информацию в двух разных циклах
foreach ($result3['BOOKS'] as $keys =>&$values) {
foreach ($values as $key=>&$value) {
print_r($value);
echo "<br/>";
echo "<br/>";
}
}
foreach ($result3['AUTHORS'] as $keys =>&$values) {
foreach ($values as $key=>&$value) {
print_r($value);
echo "<br/>";
echo "<br/>";
}
}
вроде эффект дало, вывелось все что есть в массиве, но не могу вытащить их для вывода html разметку Выводить поэлементно, используя просто поиск в виде $array[0][1] и так 10 строк неправильно будет (а если там 500 авторов и 500 книг) уже долго сижу над этим, прошу помощи ))
Если я понял правильно, то получайте значения по ключу.
Также можно изменить логику массива, убрать лишний элемент email_author
и email_book
. Вместо них будет выступать ключ.
// Я уменьшил количество данных для более упрощенного чтения кода.
$results = [
'AUTHORS' => [
'pasha12316@ya.ru' => [
'fio' => 'Pavel Kharchenko',
'year_of_birth' => '1990'
]
],
'BOOKS' => [
'pasha12316@ya.ru' => [
'title' => 'Progressive',
]
]
];
Для их вывода будем использовать ключи.
// Для начала выведем авторов
foreach ($results['AUTHORS'] as $email => $info) {
echo "<p><span>$email</span> " . $info['fio'] . $info['year_of_birth'] . "</p>";
}
// Затем книги
foreach ($results['BOOKS'] as $email => $info) {
echo "<p><span>$email</span> " . $info['title'] . "</p>";
}
Можно также структуру данных таким образом, сделать вместо поиска по ключу, простой перебор массива (списка) со вложенным списком книг.
$results = [
[
'name' => 'Pavel Kharchenko',
'email' => 'pasha12316@ya.ru',
'born' => 1990,
'books' => [
[
'title' => 'Progressive',
'written' => 2012 // Добавил ещё один элемент для примера.
]
]
]
];
А затем перебрать его таким образом
foreach ($results as $entry) {
echo "<p>Author: " . $entry['name'] . "</p>";
echo "<p>Email: " . $entry['email'] . "</p>";
echo "<p>Was born in: " . $entry['born'] . "</p>";
echo "<p>Books:</p>";
echo "<ul>";
foreach ($entry['books'] as $book) {
echo "<li><p>" . $book['title'] . " written in " . $book['written'] . "</p></li>";
}
echo "</ul>";
}
Обновлено по комментарию
foreach ($results as $author) {
foreach ($author["books"] as $book) {
echo "<p>Книга " . $book['title'] . ", её написал " . $author['name'] . " " . $author['born'] . " (" . $author['email'] . ")</p>";
}
}
foreach($result3['BOOKS'] as $email => $book) {
echo $book['title'];
echo "<br/>";
$result3['AUTHORS'][$email]['fio'];
echo "<br/>";
$result3['AUTHORS'][$email]['year_of_birth'];
}
Виртуальный выделенный сервер (VDS) становится отличным выбором
У меня есть две таблицы в БДМне нужно во второй таблице в поле routes_route_id сослаться на поле route_id в первой таблице, но я не могу указать связь...
Делаю тестовое заданиеНеобходимо реализовать гостевую книгу на MVC
Здравствуйте допустим есть страница: https://mysite/profile#access_token=32f4539aeec6311e0d06f2305aeee88fbd9bfc773f885980c40a195672d1fa9247a6177c1746b67c4c779
есть таблица в которой редактируются данные и кнопка, по которой это всё сохраняетсяЗапрос изначально выглядел таким образом: