2

まず第一に、私はPHPに非常に慣れていないので、まだ試しています。私の問題は次のとおりです。PHPでBingAPIの結果をエコーし​​ようとしています。

これがJSONの結果の例です。

$jsonobj = json_decode($response);

(応答はBingから取得したものなので、以下に応答を貼り付けました-どこから取得したのか疑問に思われる場合に備えて、この情報を追加してください$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ただし、、、Descriptionなどの実際の結果をエコーする方法がわかりませんUrl

私は試した:

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:ハイパーテキストプリプロセッサ

説明:PHPとは何ですか?PHPは、広く使用されている汎用スクリプト言語であり、Web開発に特に適しており、HTMLに埋め込むことができます。

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

次に、他の2つの結果。

どうもありがとう :)

4

2 に答える 2

5

これは次のように実行できます。

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

ちなみに、json文字列をフォーマットするためのツールを使用する必要があります。このようにして、jsonデータがどのように見えるかがはるかに明確になります。

于 2012-10-01T21:04:38.437 に答える
0

最初にprint_rメソッドを使用して、オブジェクトがどのように見えるかを確認し、ループを開始する場所を決定できるようにします。

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

次に、タイプを$ array =(array)$jsonobj;のような配列に変更します。したがって、array_shift関数に使用できます(この関数を使用して配列を調整できます)

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

于 2012-10-01T21:05:12.603 に答える