请原谅极端初学者的编码风格。我是第一次使用API中的PHP和JSON字符串。
我在这里尝试做的事情,如果你仔细观察它显然是行不通的,就是打印出用户正在搜索的多个电影结果。这是一个搜索结果页面 - 带有电影海报和每个项目旁边的一些关键细节。
我希望每个结果旁边的其中一个内容是电影中列出的前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) {
答案 0 :(得分:4)
为什么你在使用美元电影[0]时才会出现在电影中($电影作为电影)?你应该使用$ film-&gt;演员吧?你应该在你的循环开始时使用var_dump转储$ film并检查它 - 确保$ cast是一个数组并填充。如果不是,请从那里开始工作。