2012-10-01 65 views
2

首先,我对PHP非常陌生,所以我仍在尝试。我的问题是:我试图在PHP中回应Bing API结果。显示json结果的PHP问题

这里是一个JSON结果例子,这是我从

$jsonobj = json_decode($response); 

得到(的反应是我从兵得到的,所以我只粘贴了以下回应 - 万一添加此信息你不知道在哪里得到$jsonobj = json_decode($response);从)

{"d":{"results":[{"__metadata":{"uri":"https://api.datamarket.azure.com/Data.ashx/Bing/Search/Composite?Sources=\u0027web\u0027&Market=\u0027en-US\u0027&Query=\u0027php\u0027&Adult=\u0027off\u0027&$skip=0&$top=1","type":"ExpandableSearchResult"},"ID":"1c509d25-5ca4-4db5-bfc5-cafd6917e2c2","WebTotal":"10600000","WebOffset":"0","ImageTotal":"","ImageOffset":"","VideoTotal":"","VideoOffset":"","NewsTotal":"","NewsOffset":"","SpellingSuggestionsTotal":"","AlteredQuery":"","AlterationOverrideQuery":"","Web":[{"__metadata":{"uri":"https://api.datamarket.azure.com/Data.ashx/Bing/Search/ExpandableSearchResultSet(guid\u00271c509d25-5ca4-4db5-bfc5-cafd6917e2c2\u0027)/Web?$skip=0&$top=1","type":"WebResult"},"ID":"4cf2a8d6-21b7-433d-81e9-84e74091a44a","Title":"PHP: Hypertext Preprocessor","Description":"What is PHP? PHP is a widely-used general-purpose scripting language that is especially suited for Web development and can be embedded into HTML.","DisplayUrl":"www.php.net","Url":"http://www.php.net/"},{"__metadata":{"uri":"https://api.datamarket.azure.com/Data.ashx/Bing/Search/ExpandableSearchResultSet(guid\u00271c509d25-5ca4-4db5-bfc5-cafd6917e2c2\u0027)/Web?$skip=48&$top=1","type":"WebResult"},"ID":"2d8f8107-895e-4052-9edc-b656e74c3f2e","Title":"CakePHP: the rapid development php framework. Pages","Description":"Official website. Offers a manual for beginners and links towards the last version.","DisplayUrl":"cakephp.org","Url":"http://cakephp.org/"},{"__metadata":{"uri":"https://api.datamarket.azure.com/Data.ashx/Bing/Search/ExpandableSearchResultSet(guid\u00271c509d25-5ca4-4db5-bfc5-cafd6917e2c2\u0027)/Web?$skip=49&$top=1","type":"WebResult"},"ID":"816d781c-ff8b-4a60-b5b7-28d807bba28a","Title":"PHP Presents","Description":"Welcome to the PHP Presentation System. Here we list all of the available presentation categories stored within this system.","DisplayUrl":"talks.php.net","Url":"http://talks.php.net/"}],"Image":[],"Video":[],"News":[],"RelatedSearch":[],"SpellingSuggestions":[]}]}} 

现在,我明白,我可以重复,例如,WebTotal使用:

foreach($jsonobj->d->results as $value) { 
    echo $value->WebTotal; 
} 

但是,我迷失在如何回应实际结果,如Title,DescriptionUrl

我想:

foreach($jsonobj->d->results as $value) { 
    echo $value->Title."<br>"; 
    echo $value->Description."<br>"; 
    echo $value->Url."<br>"; 
} 

也类似:

foreach($jsonobj->d->results->Web as $value) { 
    echo $value->Title."<br>"; 
    echo $value->Description."<br>"; 
    echo $value->Url."<br>"; 
} 

,因为我认为添加Web到foreach将可能呼应正确的价值观,但没有成功。

也许有人可以帮助我,告诉我我做错了什么?

我的任务将有如下结果:

标题:PHP:Hypertext Preprocessor的

描述:PHP是什么? PHP是一种广泛使用的通用 脚本语言,特别适合Web开发,并且 可以嵌入到HTML中。

的URL:http://www.php.net/

然后,其他两个结果。

太谢谢你了:)

+0

有时,它帮助打印出对象的格式化版本,以更好地了解这些元素。 :)'printf('

%s
',print_r($ value,1));' – Sean3z

回答

5

你可以做到这一点,如下所示:

foreach($jsonobj->d->results as $result) { 
    foreach($result->Web as $value) { 
     echo $value->Title; 
     // and the same for the other properties 
    } 
} 

通过方式:你应该使用一个工具来格式化你的json字符串。通过这种方式,json数据将如何变得更加清晰。

+0

演示:http://codepad.org/av383ySl :) – Sean3z

+0

谢谢你帮助的键盘演示:) –

0

results包含数组,所以你需要的东西是这样的:

foreach($jsonobj->d->results[0]->Web as $value) 
{ 
    echo 'Title: ' . $value->Title . '<br /><br />'; 
    echo 'Description: ' . $value->Description . '<br /><br />'; 
    echo 'Url: ' . $value->Url . '<br /><br /><br />'; 
} 
0

首先使用print_r方法,这样你就可以看到对象是怎么样的,所以你可以确定从哪里开始循环。

echo '<pre>'; 
print_r($jsonobj); 

然后将类型更改为像数组$ array =(array)$ jsonobj;所以你可以用它来array_shift功能(你可以使用此功能调整阵列)

http://php.net/manual/en/function.array-shift.php

+0

这有什么用? – Sean3z

+0

它将帮助您首先调试数组,以便您轻松知道从何处开始循环,而不是使用长方法链接 –

+0

请参阅我的第一条评论。只需打印出对象即可完成此操作。不需要recast和array_shift();) – Sean3z