Пожалуйста, прости крайний стиль кодирования новичка. Я впервые работаю со строками PHP и JSON из API.
То, что я пытаюсь сделать здесь, что, очевидно, не работает, если вы просматриваете его, - это распечатать несколько результатов просмотра фильма, которые ищет пользователь. Это страница результатов поиска - с плакатом фильма и некоторыми ключевыми деталями рядом с каждым элементом.
Одной из вещей, которые я хочу видеть рядом с каждым результатом, является список первых 5 актеров, перечисленных в фильме как «В главных ролях», а затем всех режиссеров, указанных в фильме как «Режиссер».
Проблема, без сомнения, в том, что я вложил утверждения foreach. Но я не знаю другого способа сделать это.
Пожалуйста, пожалуйста, самый простой ответ будет лучшим для меня. Я не возражаю, если это плохая практика, все, что решит ее быстрее, будет идеальным!
Вот код:
// Check if there were any results
if ($films_result == '["Nothing found."]' || $films_result == null) {
}
else {
// Loop through each film returned
foreach ($films as $film) {
// Set default poster image to use if film doesn't have one
$backdrop_url = 'images/placeholder-film.gif';
// Loop through each poster for current film
foreach($film->backdrops as $backdrop) {
if ($backdrop->image->size == 'thumb') {
$backdrop_url = $backdrop->image->url;
}
}
echo '<div class="view-films-film">
<a href="film.php?id=' . $film->id . '"><img src="' . $backdrop_url . '" alt="' . strtolower($film->name) . '" /></a>
<div class="view-films-film-snippet">
<h2><a href="film.php?id=' . $film->id . '">' . strtolower($film->name) . '</a></h2>
<img src="images/bbfc-' . strtolower($film->certification) . '.png" alt="" />
<h3>Starring</h3>
<p>';
$num_actors = 0;
foreach ($films[0]->cast as $cast) {
if ($cast->job == 'Actor') {
echo '<a href="person.php?id=' . $cast->id . '">' . $cast->name . '</a> ';
$num_actors++;
if ($num_actors == 5)
break;
}
}
echo ' </p>
<h3>Director</h3>
<p>';
foreach ($films[0]->cast as $cast) {
if ($cast->job == 'Director') {
echo '<a href="person.php?id=' . $cast->id . '">' . $cast->name . '</a> ';
}
}
echo ' </p>
</div>
</div>';
// End films
}
}
Пример результата будет следующим:

со строкой 120, равной foreach ($films[0]->cast as $cast) {
, и строкой 131, равной foreach ($films[0]->cast as $cast) {