لا يمكن استخدام كائن من نوع stdclass ... Google Search API upi urls to the array

StackOverflow https://stackoverflow.com/questions/19849903

سؤال

رمز غير العمل:
إشعار: محاولة الحصول على عقار غير كائن

$i = 1;
var_dump($rez->responseData->results[$i]->url);

خطأ فادح: لا يمكن استخدام كائن من نوع stdclass كصفيف في

$rez = (array) $rez;
var_dump($rez['responseData']['results']['1']['url']);


نتائج رمز العمل:
كيف يمكنني أن أمارس عناوين URL فقط وأحول قائمة URL إلى صفيف؟

stdClass Object
(
[responseData] => stdClass Object
    (
        [results] => Array
            (
                [0] => stdClass Object
                    (
                        [GsearchResultClass] => GwebSearch
                        [unescapedUrl] => http://www.rottentomatoes.com/top/
                        [url] => http://www.rottentomatoes.com/top/
                        [visibleUrl] => www.rottentomatoes.com
...........................................................................

رمز العمل:

function google_search_api($args, $referer = 'http://localhost/test/', $endpoint = 'web'){
$url = "http://ajax.googleapis.com/ajax/services/search/".$endpoint;

if ( !array_key_exists('v', $args) )
    $args['v'] = '1.0';

$url .= '?'.http_build_query($args, '', '&');

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
// note that the referer *must* be set
curl_setopt($ch, CURLOPT_REFERER, $referer);
$body = curl_exec($ch);
curl_close($ch);
//decode and return the response
return json_decode($body);
}

$rez = google_search_api(array(
    'q' => 'movie list', 'start' => '5',
 ));

echo '<pre>';
print_r($rez);
echo '</pre>';
?>

لقد جربت اختلافات متعددة من ما سبق ولكني لا أكتشفها. ربما شيء بسيط لذلك سيكون موضع تقدير أي تعليق.

هل كانت مفيدة؟

المحلول

يبدو أن هذا يجب أن يعمل

$urls = array_map(function($result) {
    return $result->url;
}, $rez->responseData->results);
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top