2017-08-11 104 views
-1

我正在制作某种类型的网站来观看电影/电视节目,只是为了好玩。而且我被卡住了,基本上我做了getMovieFromAPI函数,它将给定的ID和数据库中的数据搜索到imdbID,然后我使用imdbID从API查找关于该电影的信息。并且一切都很好,我可以使用funcion中的echo来显示数据。 我的问题是,如何在这个函数外使用这个数据,例如:当我想看看电影的年份和情节时,我怎么能从这个函数中获取数据。我试着将它作为数组和其他所有东西来返回。希望我解释好,我想要什么从函数中返回json数据

我的代码:

function getMovieFromAPI($IDD) { 

global $connect, $omdbAPIKey; 

$query[0] = "SELECT * FROM movies WHERE ID = '$IDD' LIMIT 1"; 
$results[0] = $connect -> query($query[0]); 
$row[0] = $results[0] -> fetch_assoc(); 

$ID    = $row[0]['imdbID']; 

$apiurl = 'http://www.omdbapi.com/?i='.$ID.'&apikey='.$omdbAPIKey; 

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $apiurl); 
curl_setopt($ch, CURLOPT_HEADER, false); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_BINARYTRANSFER, true); 
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5); 
$response = curl_exec($ch); 
curl_close($ch); 

$data = json_decode($response);} 

编辑:根据要求,我做了测试页面只是调用这个函数,看看它是否工作

getMovieFromAPI('1'); 
+0

你可以编辑你的代码,让我们知道你在哪里调用'getMovieFromAPI()'函数?返回值将返回到哪里?另外,你在解析JSON对象以获取其中的数据时遇到问题吗? – Enigmadan

+0

你在网站或手机应用程序中使用这个吗? – Viney

+0

在网站@Novice –

回答

0

一些基本功能的东西

为了使用您在函数中创建的对象,您确实有两个选项。您可以以某种方式将信息传递到函数之外,也可以在函数之外初始化对象。

第一个选项可以使用return语句完成。这会将对象返回到函数被调用的位置。如果你想使用返回的数据,您需要将它存储在某处:

// This function's return value isn't actually being stored anywhere 
thisFunctionReturnsSomething($a, $b); 

// This function's return value is being stored into the variable $data 
$data = thisFunctionReturnsSomething($a, $b); 

但是,我们还需要确保我们的函数返回一个值,所以我们可以使用它!现在

function thisFunctionReturnsSomething($a, $b){ 
    // Lets do something with the variables that are passed in 
    $c = $a + $b; 
    // And return what we just did 
    return $c; 
} 

如果我们调用函数和存储返回值$data = thisFunctionReturnsSomething($a, $b);我们就会有$a$b存储在$data的总和。

一些JSON的东西

一旦你有你的数据,你可以使用JSON的层次结构,以达到你想要的特定信息。

假设你有一个返回值,看起来像这样:

$data = {"key1": "value1", "key2": "value2"}; 

您可以使用下面的方法访问所需的特定值:

echo $data->key1; // This will return value1 

然而,这将是更容易使用一个数组访问值的解释here

$json = '{ "results" : [ { "items" : 
      [ { "item" : [ { "url" : "http://google.com/"} ] }, 
       { "item" : [ { "url" : "http://stackoverflow.com/"} ] } 
      ], 
     } ] }'; 
$data = (array)(json_decode($json)); // Casts JSON object to an array 
// Get the data from the nested array 
echo $data['results'][0]->items[1]->item[0]->url; 

回声状态nt请求results对象的第一个索引([0]),然后进一步进入项目对象,抓取该数组中的第二个元素并返回url项目的值。这应该返回的URL http://stackoverflow.com/

+0

非常感谢你,帮了我很多 –

+0

@MedisRedzic如果这解决了这个问题,请记住选择它作为接受的答案! – Enigmadan