У меня возникли проблемы с использованием cURL и JSON для печати некоторых результатов JSON на моей странице. Вот мой код, как он стоит прямо сейчас ...JSON с PHP cURL
// create curl resource
$ch = curl_init();
// set url
curl_setopt($ch, CURLOPT_URL, "http://www.wardgraphics.com/moviepickr/collection.php?user=1");
//return the transfer as a string
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
// $output contains the output string
$output = json_decode(curl_exec($ch));
foreach($output AS $movie) {
// echo the output
echo "<p>This movie title is: " . $movie->overview . "</p>";
}
// close curl resource to free up system resources
curl_close($ch);
Когда я Ouput все я получаю:
Warning: Invalid argument supplied for foreach() in /data/26/2/45/90/2371416/user/2602457/htdocs/moviepickr/tester.php on line 15
вот пример того, что быть выводимый файл PHP «коллекция ? .php пользователь = 1" :
{"title":"Shaun of the Dead","released":"2004-09-24","trailer":"http://www.youtube.com/watch?v=CfBewQPFdKE","runtime":95,"overview":"Shaun of the Dead is a humorous homage to Zombie movies from director Edgar Wright; an outrageous romantic comedy with zombies.","poster":"http://cf1.imgobject.com/posters/089/4e816b465e73d6767f000089/shaun-of-the-dead-cover.jpg"}
connection.php файл:
header('Content-type: application/json');
mysql_connect('serv', 'user', 'password');
mysql_select_db('name');
include('databasefile.php');
//'json' is set as default return format
$tmdb = new TMDb('key');
$check_collection = mysql_query("SELECT * FROM collections WHERE user_id = '$_REQUEST[user]' ORDER BY id");
while ($looped = mysql_fetch_assoc($check_collection)) {
$id = $looped[movie_id];
//Search Movie with other return format than the default
$json_movies_result = $tmdb->getMovie($id);
// Convert JSON to array of objects
$movies = json_decode($json_movies_result);
foreach ($movies AS $movie)
{
foreach($movie->posters as $poster)
{
if ($poster->image->size == 'cover') {
$poster_url = $poster->image->url;
}
}
$id = $movie->id;
$json_extra = $tmdb->getMovie($id);
$extra_info = json_decode($json_extra);
foreach($extra_info AS $extra)
{
// convert json results into new php array
$collection_array = array("title" => $movie->original_name, "released" => $movie->released, "trailer" => $extra->trailer, "runtime" => $extra->runtime, "overview" => $movie->overview, "poster" => $poster_url);
}
}
echo json_encode($collection_array);
}
Это может быть просто для тех из вас, которые знают ваши вещи, дайте мне знать, если она есть.
Спасибо тонну!
Это единственный результат, который у вас есть. Либо удалите foreach. Или проверьте результат ('is_array'), если этот API в противном случае действительно вернет список. – mario
Не передавайте результаты скручивания непосредственно в json_decode. Если в curl есть какой-либо сбой, он вернет логическую скорость, которую вы затем расшифруете, и попробуйте включить foreach. Никогда не предполагайте, что вызов завитка преуспел - всегда проверяйте наличие сбоя. –