0

だから私は次の配列構造を持っています:

{
"_": {
    "APP_ID": "server_tracked"
},
"success": true,
"requestTime": "2013-09-14T15:05:28-07:00",
"shard": "North_America:OTg0ZGYzNjA0OGYxNjAyNWUzZjVlNTQwZDk4YTdjNTYzMGE3NTA4Ng",
"player": {
    "accountId": xxx,
    "summonerId": xx,
    "name": "xx",
    "icon": xx,
    "internalName": "xx",
    "level": xx
},
"data": {
    "lifetimeStatistics": {
        "array": [
            {
                "count": 1,
                "statType": "TOTAL_SESSIONS_PLAYED",
                "dataVersion": 0,
                "value": 1,
                "championId": 111,
                "futureData": null
            },
            {
                "count": 0,
                "statType": "TOTAL_SESSIONS_LOST",
                "dataVersion": 0,
                "value": 0,
                "championId": 111,
                "futureData": null
            },

            [...]

そして、値「championId」= x および statType = y の「サブ配列」を検索したいと考えています。その配列の場合は [x] があり、その配列の任意の値を返すことができるはずです。

ここに私が現在持っているPHPコードのいくつかがあります:

$result = json_decode($response -> raw_body);

$array = $result->data->lifetimeStatistics->array;

$search1 = x;
$search2 = y;  

$cluster=false; 
foreach ($array as $n=>$c) { 
    if (in_array($search, $c)) { 
        $cluster=$n; break; 
    } 
} 

追加情報として$response = Unirest::get、配列を取得するために使用しています。

完全なコードで編集:

$result = json_decode($response -> raw_body);

$haystack = $result->data->lifetimeStatistics->array;

$searchx = x;
$searchy = y;

$arrayNumber = null;
foreach ($haystack as $n=>$c) { 
    if ($c->championId === $searchx && $c->statType === $searchy) {
        $arrayNumber = $n;
    } 
} 

// We now get the value from that array

$array = $result->data->lifetimeStatistics->array[$arrayNumber]->value;
return $array;
4

1 に答える 1

0

答えは見つかりましたが、微調整が必​​要です。

$result = json_decode($response -> raw_body);

$haystack = $result->data->lifetimeStatistics->array;

$searchx = "x"; // fill as required
$searchy = "y"; // fill as required

$cluster=null;
foreach ($haystack as $n=>$c) { 
    if ($c["championId"] === $searchx && $c["statType"] === $searchy) {
        $cluster=$n; break; 
    } 
} 
if (is_null($cluster)) die("Not found?!"); //do whatever you want if not found
于 2013-09-14T23:11:55.107 に答える