-3

これらの別のものについて申し訳ありません。

jsonは次の形式で返されます。

{
   "data":{
      "internalName":"hotshotgg",
      "name":"HotshotGG",
      "acctId":434582,
      "profileIconId":531,
      "revisionDate":"\/Date(1357002079809)\/",
      "summonerLevel":30,
      "summonerId":407750
   },
   "success":true
}

こちらもご覧ください:http://elophant.com/developers/docs/summoner

データは正しく返されます:

Array ( 
    [data] => Array ( 
        [internalName] => nemonorm 
        [name] => nemonorm 
        [acctId] => 28685607 
        [profileIconId] => 544 
        [revisionDate] => /Date(1361354064000)/ 
        [summonerLevel] => 30 
        [summonerId] => 24286314 
    ) 
    [success] => 1 
)

ループして必要な情報を印刷できないようです。

$decode= json_decode($url, true);

foreach($decode['data'] as $key => $value) {
    echo  $value['name'] . " <br />";
}

当たり前のことだと思いますが…でも見えません。

4

3 に答える 3

3

たとえば、curlを使用して、最初にURLのコンテンツを取得する必要があります。

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$json = curl_exec($ch);

$decode = json_decode($json, true);

その上、間違ったデータ構造を予期しているように見えます。エコーしたい場合はdata.name、それにアクセスします。すべてのデータをエコーし​​たい場合は、ループする必要があります。

// echo the name only:
echo $decode['data']['name'];

// echo all data
foreach($decode['data'] as $key => $value) {
   echo $key . ": " . $value . "<br />";
}
于 2013-02-20T18:50:52.703 に答える
1

配列の深さが十分ではありません。あなたが持っているものは:

Array (
    [data] => Array (
        [internalName] => nemonorm
        ...
    ) [success] => 1
)

$ decode ['data']をループすると、取得する値は配列ではなく、個々の変数になります。つまり、$ valueは配列ではなく文字列であるため、$value['name']は無意味です。必要なのはこれです:

Array (
    [data] => Array (
        [0] => Array (
            [internalName] => nemonorm
            ...
        )
    ) [success] => 1
)

次に、単一の結果の値ではなく、結果の配列をループします。

于 2013-02-20T18:59:51.910 に答える
0

私たちが持っている情報で見分けるのは難しいですが、$ urlはURLの内容ですか、それとも実際のURLですか?json_decodeを呼び出す前に、まずコンテンツを取得する必要があります。

何かのようなもの:

$json = file_get_contents($url);
$decoded = json_decode($json, true);

URLのコンテンツを取得する別の方法については、cURLhttp ://php.net/manual/en/book.curl.phpを参照してください。

于 2013-02-20T18:51:57.050 に答える