如何用PHP调用TMDB API获取排序为0的首位电影演员信息
获取TMDB首位演员的简洁方案
首先,咱们先说说你遇到的第二个foreach代码为啥只返回最后一位演员——因为你在foreach($movie_credits_id->cast as $cast);后面加了分号,这会让循环变成空执行,循环结束后$cast变量只会保留最后一个遍历到的演员对象,所以最后只输出了最后一位的名字。
要获取排序为0的首位演员,完全不需要循环,直接访问cast数组的第一个元素就可以了,再配合一个变量存储,就能实现你想要的echo $actor这种简洁调用方式。
完整优化步骤:
- 首先确保你获取演职人员的API请求正常(你的原有curl代码是没问题的,这里做了小幅简化):
<?php // 初始化curl并请求TMDB API $cs = curl_init("http://api.themoviedb.org/3/movie/{$id_movie}/credits?api_key={$apikey}"); curl_setopt($cs, CURLOPT_RETURNTRANSFER, true); curl_setopt($cs, CURLOPT_HTTPHEADER, ["Accept: application/json"]); $response9 = curl_exec($cs); curl_close($cs); $movie_credits_id = json_decode($response9); // 提取首位演员名字,增加空判断避免报错 $actor = !empty($movie_credits_id->cast[0]) ? $movie_credits_id->cast[0]->name : '暂无演员信息'; ?>
- 之后你就可以在任何需要的地方用最简洁的方式调用:
<?php echo $actor; ?>
补充说明:
- 加
!empty($movie_credits_id->cast[0])的判断是为了防止API返回空的演员列表或者请求失败时出现报错,提升代码的健壮性。 - 如果你的PHP版本支持(PHP 7+),也可以用null合并运算符进一步简化变量赋值:
$actor = $movie_credits_id->cast[0]->name ?? '暂无演员信息';
内容的提问来源于stack exchange,提问作者benkmad
相关产品推荐
相关产品推荐

