JSON cURL - неверный аргумент для foreach () - PHP - PullRequest
2 голосов
/ 02 мая 2011

Я использую этот код:

<?php

$json_url = 'http://search.twitter.com/search.json?q=royal&wedding';

$ch = curl_init( $json_url );

$options = array(
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => array('Content-type: application/json')
);

curl_setopt_array( $ch, $options );

$result =  curl_exec($ch);

if (!empty($result)){
    $json = json_decode($result);
    foreach ($json->results[0]->text as $t){
        var_dump($t);
    }
}

?>

Но я получаю неверный аргумент для foreach ??

Есть идеи?

Ответы [ 5 ]

2 голосов
/ 02 мая 2011

Попробуйте:

var_dump($json->results[0]->text);

И вы получите что-то вроде:

string(166) "RT @womensweard...

Это означает, что вы пытаетесь перебрать строку.

Полагаю, вы хотите:

foreach ($json->results as $t){
  var_dump($t->text);
}
1 голос
/ 02 мая 2011

Вы зацикливаете свойство text первого результата. Если вы хотите вывести text для каждого результата, вам нужно зациклить результаты:

foreach ($json->results as $t){
    var_dump($t->text);
}
0 голосов
/ 13 января 2014

Добавление CURLOPT_SSL_VERIFYPEER => false к параметрам CURL в методе executeRequest () в TwitterAPIExchange.php, похоже, решает эту проблему.

ср здесь

0 голосов
/ 02 мая 2011

Идея: $result не является допустимым JSON, а ваш $result не является массивом.

0 голосов
/ 02 мая 2011

Проверьте, успешно ли выполнен запрос CURL:

$result = curl_exec($ch);

if ($result === FALSE) {
    die(curl_error($ch));
}

Затем проверьте, действительно ли вы получили данные JSON:

var_dump($result);

, затем проверьте, успешно ли выполнен код json_dec:

$json = json_decode($result);
if(is_null($json)) {
    die(json_last_error());
}

Затем проверьте, есть ли на самом деле запись «результатов» в данных json:

if (!isset($json->results)) {
   die("No results section");
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...