2011-05-02 108 views
0

我试图让虚拟电影网站去参加大学项目。但是因为我是一名设计师,所以我在php上很糟糕(而且我的术语很可能不合适)。让我知道,如果某件事情没有意义或者说得不到解释。从JSON字符串/数组中提取第一个图像

我使用http://themoviedb.org的API来引入电影数据,并在其中一个页面上挣扎。我正在从他们的API中拉出一个JSON字符串,并试图获得第一个'背景'图像来显示(每个不同的电影有不同数量的背景,从无到20左右)。 “背景”也有不同的尺寸,从“原始”尺寸到“拇指”。我试图拉入第一个被称为大小'海报'的'背景'。

所以这就是我得到的。问题是 - 对我来说 - 它看起来完美结构,但只是返回'no-backdrop.gif'后备。

<?php 
    //TMDb id for a movie 
    $tmdb_id = $_GET["id"]; 

    //Search Movie with default return format 
    $movies_result = $tmdb->getMovie($tmdb_id); 

    // Decode JSON into PHP array 
    $movies = json_decode($movies_result); 
?> 
<?php 
    // Set default poster image to use if movie doesn't have one 
    $backdrop_url = 'no-backdrop.gif'; 

    if ($movies[0]->backdrops->image->size == 'poster') { 
     $backdrop_url = $movies[0]->backdrops->image->url; 
    } 

    echo '<img src="' . $backdrop_url . '" />'; 
?> 


而这里的是JSON字符串。不幸的是,这是巨大的,所以我不得不削减什么似乎与我无关。

完整的字符串可以在下面链接的页面底部找到。

Array ([0] => stdClass Object (......... [backdrops] => Array ([0] => stdClass Object ([image] => stdClass Object ([type] => backdrop [size] => original [height] => 1080 [width] => 1920 [url] => http://cf1.imgobject.com/backdrops/9b1/4d0095bd7b9aa1514a0069b1/black-swan-original.jpg [id] => 4d0095bd7b9aa1514a0069b1)) [1] => stdClass Object ([image] => stdClass Object ([type] => backdrop [size] => poster [height] => 439 [width] => 780 [url] => http://cf1.imgobject.com/backdrops/9b1/4d0095bd7b9aa1514a0069b1/black-swan-poster.jpg [id] => 4d0095bd7b9aa1514a0069b1)) [2] => stdClass Object ([image] => stdClass Object ([type] => backdrop [size] => thumb [height] => 169 [width] => 300 [url] => http://cf1.imgobject.com/backdrops/9b1/4d0095bd7b9aa1514a0069b1/black-swan-thumb.jpg [id] => 4d0095bd7b9aa1514a0069b1)) [3] => stdClass Object ([image] => stdClass Object ([type] => backdrop [size] => w1280 [height] => 720 [width] => 1280 [url] => http://cf1.imgobject.com/backdrops/9b1/4d0095bd7b9aa1514a0069b1/black-swan-w1280.jpg [id] => 4d0095bd7b9aa1514a0069b1)) [4] => stdClass Object ([image] => stdClass Object ([type] => backdrop [size] => original [height] => 1080 [width] => 1920 [url] => http://cf1.imgobject.com/backdrops/9bb/4d00977f7b9aa1514a0069bb/black-swan-original.jpg [id] => 4d00977f7b9aa1514a0069bb)) [5] => stdClass Object ([image] => stdClass Object ([type] => backdrop [size] => poster [height] => 439 [width] => 780 [url] => http://cf1.imgobject.com/backdrops/9bb/4d00977f7b9aa1514a0069bb/black-swan-poster.jpg [id] => 4d00977f7b9aa1514a0069bb)) [6] => stdClass Object ([image] => stdClass Object ([type] => backdrop [size] => thumb [height] => 169 [width] => 300 [url] => http://cf1.imgobject.com/backdrops/9bb/4d00977f7b9aa1514a0069bb/black-swan-thumb.jpg [id] => 4d00977f7b9aa1514a0069bb)) [7] => stdClass Object ([image] => stdClass Object ([type] => backdrop [size] => w1280 [height] => 720 [width] => 1280 [url] => http://cf1.imgobject.com/backdrops/9bb/4d00977f7b9aa1514a0069bb/black-swan-w1280.jpg [id] => 4d00977f7b9aa1514a0069bb)) [8] => stdClass Object ([image] => stdClass Object ([type] => backdrop [size] => original [height] => 1080 [width] => 1920 [url] => http://cf1.imgobject.com/backdrops/172/4d06bcb07b9aa11bc4003172/black-swan-original.jpg [id] => 4d06bcb07b9aa11bc4003172)) [9] => stdClass Object ([image] => stdClass Object ([type] => backdrop [size] => poster [height] => 439 [width] => 780 [url] => http://cf1.imgobject.com/backdrops/172/4d06bcb07b9aa11bc4003172/black-swan-poster.jpg [id] => 4d06bcb07b9aa11bc4003172)) [10] => stdClass Object ([image] => stdClass Object ([type] => backdrop [size] => thumb [height] => 169 [width] => 300 [url] => http://cf1.imgobject.com/backdrops/172/4d06bcb07b9aa11bc4003172/black-swan-thumb.jpg [id] => 4d06bcb07b9aa11bc4003172)) [11] => stdClass Object ([image] => stdClass Object ([type] => backdrop [size] => w1280 [height] => 720 [width] => 1280 [url] => http://cf1.imgobject.com/backdrops/172/4d06bcb07b9aa11bc4003172/black-swan-w1280.jpg [id] => 4d06bcb07b9aa11bc4003172)) [12] => stdClass Object ([image] => stdClass Object ([type] => backdrop [size] => original [height] => 1080 [width] => 1920 [url] => http://cf1.imgobject.com/backdrops/c50/4d4708625e73d65704003c50/black-swan-original.jpg [id] => 4d4708625e73d65704003c50)) [13] => stdClass Object ([image] => stdClass Object ([type] => backdrop [size] => poster [height] => 439 [width] => 780 [url] => http://cf1.imgobject.com/backdrops/c50/4d4708625e73d65704003c50/black-swan-poster.jpg [id] => 4d4708625e73d65704003c50)) [14] => stdClass Object ([image] => stdClass Object ([type] => backdrop [size] => thumb [height] => 169 [width] => 300 [url] => http://cf1.imgobject.com/backdrops/c50/4d4708625e73d65704003c50/black-swan-thumb.jpg [id] => 4d4708625e73d65704003c50)) [15] => stdClass Object ([image] => stdClass Object ([type] => backdrop [size] => w1280 [height] => 720 [width] => 1280 [url] => http://cf1.imgobject.com/backdrops/c50/4d4708625e73d65704003c50/black-swan-w1280.jpg [id] => 4d4708625e73d65704003c50)) [16] => stdClass Object ([image] => stdClass Object ([type] => backdrop [size] => original [height] => 1080 [width] => 1920 [url] => http://cf1.imgobject.com/backdrops/452/4d0a52997b9aa162af000452/black-swan-original.jpg [id] => 4d0a52997b9aa162af000452)) [17] => stdClass Object ([image] => stdClass Object ([type] => backdrop [size] => poster [height] => 439 [width] => 780 [url] => http://cf1.imgobject.com/backdrops/452/4d0a52997b9aa162af000452/black-swan-poster.jpg [id] => 4d0a52997b9aa162af000452)) [18] => stdClass Object ([image] => stdClass Object ([type] => backdrop [size] => thumb [height] => 169 [width] => 300 [url] => http://cf1.imgobject.com/backdrops/452/4d0a52997b9aa162af000452/black-swan-thumb.jpg [id] => 4d0a52997b9aa162af000452)) [19] => stdClass Object ([image] => stdClass Object ([type] => backdrop [size] => w1280 [height] => 720 [width] => 1280 [url] => http://cf1.imgobject.com/backdrops/452/4d0a52997b9aa162af000452/black-swan-w1280.jpg [id] => 4d0a52997b9aa162af000452)) [20] => stdClass Object ([image] => stdClass Object ([type] => backdrop [size] => original [height] => 1080 [width] => 1920 [url] => http://cf1.imgobject.com/backdrops/443/4d0a514c7b9aa162af000443/black-swan-original.jpg [id] => 4d0a514c7b9aa162af000443)) [21] => stdClass Object ([image] => stdClass Object ([type] => backdrop [size] => poster [height] => 439 [width] => 780 [url] => http://cf1.imgobject.com/backdrops/443/4d0a514c7b9aa162af000443/black-swan-poster.jpg [id] => 4d0a514c7b9aa162af000443)) [22] => stdClass Object ([image] => stdClass Object ([type] => backdrop [size] => thumb [height] => 169 [width] => 300 [url] => http://cf1.imgobject.com/backdrops/443/4d0a514c7b9aa162af000443/black-swan-thumb.jpg [id] => 4d0a514c7b9aa162af000443)) [23] => stdClass Object ([image] => stdClass Object ([type] => backdrop [size] => w1280 [height] => 720 [width] => 1280 [url] => http://cf1.imgobject.com/backdrops/443/4d0a514c7b9aa162af000443/black-swan-w1280.jpg [id] => 4d0a514c7b9aa162af000443)) [24] => stdClass Object ([image] => stdClass Object ([type] => backdrop [size] => original [height] => 1080 [width] => 1920 [url] => http://cf1.imgobject.com/backdrops/1af/4cd5d8597b9aa11b270001af/black-swan-original.jpg [id] => 4cd5d8597b9aa11b270001af)) [25] => stdClass Object ([image] => stdClass Object ([type] => backdrop [size] => poster [height] => 439 [width] => 780 [url] => http://cf1.imgobject.com/backdrops/1af/4cd5d8597b9aa11b270001af/black-swan-poster.jpg [id] => 4cd5d8597b9aa11b270001af)) [26] => stdClass Object ([image] => stdClass Object ([type] => backdrop [size] => thumb [height] => 169 [width] => 300 [url] => http://cf1.imgobject.com/backdrops/1af/4cd5d8597b9aa11b270001af/black-swan-thumb.jpg [id] => 4cd5d8597b9aa11b270001af)) [27] => stdClass Object ([image] => stdClass Object ([type] => backdrop [size] => w1280 [height] => 720 [width] => 1280 [url] => http://cf1.imgobject.com/backdrops/1af/4cd5d8597b9aa11b270001af/black-swan-w1280.jpg [id] => 4cd5d8597b9aa11b270001af)) [28] => stdClass Object ([image] => stdClass Object ([type] => backdrop [size] => original [height] => 1080 [width] => 1920 [url] => http://cf1.imgobject.com/backdrops/453/4d0a527d7b9aa162bf000453/black-swan-original.jpg [id] => 4d0a527d7b9aa162bf000453)) [29] => stdClass Object ([image] => stdClass Object ([type] => backdrop [size] => poster [height] => 439 [width] => 780 [url] => http://cf1.imgobject.com/backdrops/453/4d0a527d7b9aa162bf000453/black-swan-poster.jpg [id] => 4d0a527d7b9aa162bf000453)) [30] => stdClass Object ([image] => stdClass Object ([type] => backdrop [size] => thumb [height] => 169 [width] => 300 [url] => http://cf1.imgobject.com/backdrops/453/4d0a527d7b9aa162bf000453/black-swan-thumb.jpg [id] => 4d0a527d7b9aa162bf000453)) [31] => stdClass Object ([image] => stdClass Object ([type] => backdrop [size] => w1280 [height] => 720 [width] => 1280 [url] => http://cf1.imgobject.com/backdrops/453/4d0a527d7b9aa162bf000453/black-swan-w1280.jpg [id] => 4d0a527d7b9aa162bf000453)) [32] => stdClass Object ([image] => stdClass Object ([type] => backdrop [size] => original [height] => 1080 [width] => 1920 [url] => http://cf1.imgobject.com/backdrops/ed2/4d616c627b9aa154bf004ed2/black-swan-original.jpg [id] => 4d616c627b9aa154bf004ed2)) [33] => stdClass Object ([image] => stdClass Object ([type] => backdrop [size] => poster [height] => 439 [width] => 780 [url] => http://cf1.imgobject.com/backdrops/ed2/4d616c627b9aa154bf004ed2/black-swan-poster.jpg [id] => 4d616c627b9aa154bf004ed2)) [34] => stdClass Object ([image] => stdClass Object ([type] => backdrop [size] => thumb [height] => 169 [width] => 300 [url] => http://cf1.imgobject.com/backdrops/ed2/4d616c627b9aa154bf004ed2/black-swan-thumb.jpg [id] => 4d616c627b9aa154bf004ed2)) [35] => stdClass Object ([image] => stdClass Object ([type] => backdrop [size] => w1280 [height] => 720 [width] => 1280 [url] => http://cf1.imgobject.com/backdrops/ed2/4d616c627b9aa154bf004ed2/black-swan-w1280.jpg [id] => 4d616c627b9aa154bf004ed2)) [36] => stdClass Object ([image] => stdClass Object ([type] => backdrop [size] => original [height] => 1080 [width] => 1920 [url] => http://cf1.imgobject.com/backdrops/486/4d0a526e7b9aa162b7000486/black-swan-original.jpg [id] => 4d0a526e7b9aa162b7000486)) [37] => stdClass Object ([image] => stdClass Object ([type] => backdrop [size] => poster [height] => 439 [width] => 780 [url] => http://cf1.imgobject.com/backdrops/486/4d0a526e7b9aa162b7000486/black-swan-poster.jpg [id] => 4d0a526e7b9aa162b7000486)) [38] => stdClass Object ([image] => stdClass Object ([type] => backdrop [size] => thumb [height] => 169 [width] => 300 [url] => http://cf1.imgobject.com/backdrops/486/4d0a526e7b9aa162b7000486/black-swan-thumb.jpg [id] => 4d0a526e7b9aa162b7000486)) [39] => stdClass Object ([image] => stdClass Object ([type] => backdrop [size] => w1280 [height] => 720 [width] => 1280 [url] => http://cf1.imgobject.com/backdrops/486/4d0a526e7b9aa162b7000486/black-swan-w1280.jpg [id] => 4d0a526e7b9aa162b7000486))) .........)) 


或看到它在行动失败了,你可以去这里 - http://rowancavanagh.com/getfilm/tmdb_movie.php?id=44214
(完成与底部印刷的JSON字符串)

回答

1

backdrops属性是一个数组,你有以阵列的形式访问它:

$backdrop_url = $movies[0]->backdrops[0]->image->url; 

尝试开启error_reporting和/或display_errorslog_errors,这是一个很容易被这些错误捕获的错误:“尝试获取非对象的属性”

此外,使用issetif防止E_NOTICE从弹出如果没有图像:

if (isset($movies[0]->backdrops[0]->image->size) && 
    $movies[0]->backdrops[0]->image->size == 'poster') 
{ 
    // stuff 
} 

如果您在backdrops多个元素,并希望只获取一个与poster类型,使用foreach循环:

foreach ($movies[0]->backdrops as $backdrop) { 
    if (isset($backdrop->image->size) && $backdrop->image->size == 'poster') { 
     $backdrop_url = $backdrop->image->url; 
     break; 
    } 
} 
+0

是的,我已经基本上试过之前,但问题是,所有的背景似乎是在阵列。而我想要的那个可能并不总是处于相同的位置。 我想要的是 [1] => stdClass Object([image] => stdClass Object([type] => backdrop [size] =>海报[height] => 439 [width] => 780 [url ] => http://cf1.imgobject.com/backdrops/9b1/4d0095bd7b9aa1514a0069b1/black-swan-poster.jpg [id] => 4d0095bd7b9aa1514a0069b1)) 如何打开error_reporting?我试过了,它没有做任何事 – Rowan 2011-05-02 21:40:29

+0

任何想法的人? – Rowan 2011-05-03 00:24:03

+0

@ rowanc88:查看我更新的答案。 – netcoder 2011-05-03 00:34:07

相关问题