2017-08-11 106 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