在PHP中嵌套对象的嵌套数组中访问和过滤数据

时间:2014-10-07 16:22:50

标签: php

我使用了英雄联盟的api,我会得到召唤者的统计数据。

我正在使用英雄联盟的API来获取召唤者的统计数据。

代码:

object(stdClass)[3]
 public 'summonerId' => int XXXXXXXXXXX
  public 'playerStatSummaries' => 
    array (size=15)
  0 => 
    object(stdClass)[4]
      public 'playerStatSummaryType' => string 'AramUnranked5x5' (length=15)
      public 'wins' => int 100
      public 'modifyDate' => float 1412611932000
      public 'aggregatedStats' => 
        object(stdClass)[5]
          ...

我想仅在" Playerstatsummarytype"的值时获取数据。是" RankedSolo5x5"。

我一直试图用这个:

$win_ranked = $parsed_json2->{'playerStatSummaries'}[8]->{'wins'};
$losses_ranked = $parsed_json2->{'playerStatSummaries'}[8]->{'losses'};

但是对于某些召唤者,有时候这个数字是8或9。

那么我怎样才能获得数据?#34; Playerstatsummarytype"是RankedSolo5x5。

谢谢=)

1 个答案:

答案 0 :(得分:1)

所以看起来你只需要在$parsed_json2->playerStatSummaries过滤数组。

这应该很简单:

$filtered_array = array_filter($parsed_json2->playerStatSummaries, function($item) {
    return ($item->playerStatSummaryType === 'RankedSolo5x5');
});
// now you can get at wins/losses for items in filtered array like:
foreach ($filtered_array as $obj) {
    echo 'Wins: ' . $obj->wins;
    echo 'Losses: ' . $obj->losses;
}