如何通过foreach循环从API返回的JSON中获取imdb_id并解决解码显示问题
问题分析与解决方案
嘿,我看了你的代码和API返回的JSON数据,问题出在对返回数据结构的误判上:
核心问题
你写的代码里试图遍历$decode1['external_ids'],但实际上API返回的JSON根本没有external_ids这个嵌套层级——所有外部ID字段(包括imdb_id)都是直接在顶层对象中的键值对,不是数组结构,所以foreach循环根本不会执行,自然拿不到imdb_id的值。
修正后的代码
直接从解码后的数组中读取imdb_id即可,不需要foreach循环:
$themoviedburl = "http://api.themoviedb.org/3/tv/60625/external_ids?api_key=你的API密钥"; // 建议加上错误处理,避免请求失败导致后续报错 $get = file_get_contents($themoviedburl); if ($get === false) { die("API请求失败"); } $decode1 = json_decode($get, TRUE); // 检查解码是否成功,以及imdb_id是否存在 if (is_array($decode1) && isset($decode1['imdb_id'])) { $imdb = $decode1['imdb_id']; echo $imdb; // 输出 tt2861424 } else { echo "未获取到有效的imdb_id"; }
补充说明
如果你的API后续返回结构有变化(比如真的出现external_ids数组),再考虑用foreach遍历,但根据你提供的当前返回数据,直接取值是最直接的解决方案。同时加上错误处理能让代码更健壮,避免因为API请求失败或数据结构异常导致的白屏问题。
内容的提问来源于stack exchange,提问作者Saxo_Broko




