2016-04-25 8 views
5

私はinterwebzのすべてを探していましたが、簡単な答えは見つかりませんでした。したがって、質問は次のとおりです。PHP Jsonは値が存在するかどうかを確認します

値が存在するかどうかを確認するためにJSONをデコードします。しかし、私はそれを正しくやっているとは思わない。 appid:730の値が存在するかどうか確認したい。

はここにJSONです:

{ 
response: { 
    game_count: 106, 
     games: [ 
      { 
      appid: 10, 
      playtime_forever: 67 
      }, 
      { 
      appid: 730, 
      playtime_forever: 0 
      }, 
      { 
      appid: 368900, 
      playtime_forever: 0 
      }, 
      { 
      appid: 370190, 
      playtime_forever: 0 
      }, 
     ] 
    } 
} 

これは私が欲しいものです:

$json = file_get_contents('JSON URL HERE'); 
$msgArray = json_decode($json, true); 

if (appid: 730 exists) { 
    ... 
} 

おかげで、私は十分に説明願っています。

+0

1. foreachで '$ msgArray'を使い、' games'配列のツリーを見ます。 –

+0

'json'が応答しません... [無効なJson](https://3v4l.org/ld9Oa) –

答えて

2

を試してみてください。下記の文字列の減速のコメントを参照してください(これはあなたの質問のタイプミスかもしれません)。

$json = '{ 
"response": { 
    "game_count": 106, 
    "games": [ 
     { 
      "appid": 10, 
      "playtime_forever": 67 
     }, 
     { 
      "appid": 730, 
      "playtime_forever": 0 
     }, 
     { 
      "appid": 368900, 
      "playtime_forever": 0 
     }, 
     { 
      "appid": 370190, 
      "playtime_forever": 0 
     } // <------ note the lack of `,` 
     ] 
    } 
}'; 

$arr = json_decode($json, true); 

foreach($arr['response']['games'] as $game) { 
    if($game['appid'] === 730) { // I would strictly check (type) incase of 0 
     echo "exists"; // or do something else 
     break; // break out if you dont care about the rest 
    } 
} 

example

私達はちょうどゲームの配列をループし、そのappidをチェックしています。次に、何かをしてから、オーバーヘッドを防ぐためにループを解除します。

0
json_decode() 

実際には、デコードされたJSONを返します。 JSONはストリングです。デコードされたJSONはオブジェクトの配列です。

それぞれを検査するには、そのオブジェクトの配列を反復処理する必要があります。

$msgArray = json_decode($json); 

foreach($msgArray->response->games as $game) { 
    if($game->appid == 730) { 
     // it exists 
    } 
} 
+1

彼は第2パラメータにtrueフラグを使用しています。データのオブジェクトではなくデータの配列になっています。 –

+0

ok ...私はそれが彼の問題だとは思わない。私は、jsonをデコードした結果のデータ構造内の各データエンティティを調べるように指示しています。 – jcorry

+1

他の誰かからArraysを使用するように言われても、彼がさまざまな種類の混乱しないようにしてください。 –

0

まず、無効なJSONを持っているこの

$json = file_get_contents('JSON URL HERE'); 
$msgArray = json_decode($json, true); 

foreach($msgArray['response']['games'] as $key => $value){ 
    if ($value['appid'] == 730) { 
    //do something 
    }else{ 
    // do else 
    } 
} 
+0

'$ value.appid'は間違っていて、JSよりもPHPほどです。正解は '$ value ['appid']' –

+0

はい、私は間違っていました、ありがとうございました:-) –

0

私はかなりまっすぐ進むこの解決策を見つける:

$r='{ 
"response": { 
    "game_count": 106, 
     "games": [ 
      { 
      "appid": 10, 
      "playtime_forever": 67 
      }, 
      { 
      "appid": 730, 
      "playtime_forever": 0 
      }, 
      { 
      "appid": 368900, 
      "playtime_forever": 0 
      }, 
      { 
      "appid": 370190, 
      "playtime_forever": 0 
      } 
     ] 
    } 
}'; 

function find($arr, $id) { 
    if(!empty($arr)) 
     foreach ($arr as $key => $value) { 
      if(isset($value->appid) && $value->appid == $id) 
       return true; 
     } 
    return false; 
} 

$obj = json_decode($r); 
if(isset($obj) && isset($obj->response)) { 
    if(isset($obj->response->games) && !empty($obj->response->games)) 
     $arr = $obj->response->games; 
    else 
     $arr = array(); 
} else { 
    echo "NOT valid found\n"; 
} 

$appid = 730; 

if(find($arr, $appid)) 
    echo "Appid $appid found\n"; 
else 
    echo "Appid $appid NOT found\n"; 

それは自分のデータにアクセスする前に、他のWebサービスからの結果を解析し、検証するために非常に便利あるので、我々は避け、開発時間。

私はそれがあなたが探しているものであることを望みます。

関連する問題