Как вывести из цикла foreach в конец строки
$data = [
'authors' => [
301 => [
'id' => 301,
'name' => 'Александр Сергеевич Пушкин',
'email' => '[email protected]',
'birthYear' => 1799,
],
10 => [
'id' => 10,
'name' => 'Николай Васильевич Гоголь',
'email' => '[email protected]',
'birthYear' => 1809,
],
17 => [
'id' => 17,
'name' => 'Михаил Юрьевич Лермонтов',
'email' => '[email protected]',
'birthYear' => 1814,
],
],
'books' => [
[
'title' => 'Евгений Онегин',
'publishedAt' => '1823—1832',
'author' => 301,
],
[
'title' => 'Полтава',
'publishedAt' => '1828—1829',
'author' => 301,
],
[
'title' => 'Мёртвые души',
'publishedAt' => '1842',
'author' => 10,
],
[
'title' => 'Сказка о рыбаке и рыбке',
'publishedAt' => '1833',
'author' => 301,
],
],
];
echo '=== Книги ===<br>';
foreach($data as $key=>$value){
foreach ($value as $key2 =>$value2){
// echo "[$key2]", $value2, "<br>";
foreach ($value2 as $key3 => $value3){
if($key3 == 'title'){
echo $value3 ." - ";
}
elseif($key3 == 'author' and $value3 == 301){
echo "Александр Сергеевич Пушкин" ." - ". "<br>";
}
elseif($key3 == 'author' and $value3 == 10){
echo "Николай Васильевич Гоголь" ." - ". "<br>";
}
elseif($key3 == 'publishedAt'){
echo $value3;
}
}
}
};
Выводит:
Евгений Онегин - 1823—1832 Александр Сергеевич Пушкин -
Полтава - 1828—1829 Александр Сергеевич Пушкин -
Мёртвые души - 1842 Николай Васильевич Гоголь -
Сказка о рыбаке и рыбке - 1833 Александр Сергеевич Пушкин -
Как вывести "publishedAt" в конец строки, чтобы получилось
Евгений Онегин - Александр Сергеевич Пушкин -1823—1832
Полтава -Александр Сергеевич Пушкин -1828—1829
Мёртвые души - Николай Васильевич Гоголь -1842
Сказка о рыбаке и рыбке - Александр Сергеевич Пушкин -1833
Оставлю здесь
foreach ($data['books'] as $book){
echo $book['title']. '-'. $data['authors'][$book['author']]['name']. '-'. $book['publishedAt']. '<br>';
}
Ответы (1 шт):
Автор решения: Ivan Dudarev
→ Ссылка
В целом, вам достаточно одного foreach.
<?php
$data = [
'authors' => [
301 => [
'id' => 301,
'name' => 'Александр Сергеевич Пушкин',
'email' => '[email protected]',
'birthYear' => 1799,
],
10 => [
'id' => 10,
'name' => 'Николай Васильевич Гоголь',
'email' => '[email protected]',
'birthYear' => 1809,
],
17 => [
'id' => 17,
'name' => 'Михаил Юрьевич Лермонтов',
'email' => '[email protected]',
'birthYear' => 1814,
],
],
'books' => [
[
'title' => 'Евгений Онегин',
'publishedAt' => '1823—1832',
'author' => 301,
],
[
'title' => 'Полтава',
'publishedAt' => '1828—1829',
'author' => 301,
],
[
'title' => 'Мёртвые души',
'publishedAt' => '1842',
'author' => 10,
],
[
'title' => 'Сказка о рыбаке и рыбке',
'publishedAt' => '1833',
'author' => 301,
],
],
];
echo '=== Книги ===<br>';
foreach ($data['books'] as $book) {
// Проверяем, есть ли у нас вообще такой автор
if (!array_key_exists($book['author'], $data['authors'])) {
// Если нет, пропускаем книгу, ну или бросаем исключение и т.д.
continue;
}
$author = $data['authors'][$book['author']]
echo $book['title'] . ' - ' . $author['name'] . ' - ' . $book['publishedAt'] . '<br>';
}
Не понятно зачем вы нагородили такие проверки и захардкодили имена авторов