PHP访问具有名称的数组值

时间:2017-02-04 18:02:55

标签: php arrays

我试图创建一个从(大型)数组中获取信息的PHP网站。

数组如下所示:

"playerstats": {
        "steamID": "MyID",
        "gameName": "ValveTestApp260",
        "stats": [
            {
                "name": "total_kills",
                "value": 35342
            },
            {
                "name": "total_deaths",
                "value": 30465
            },
            {
                "name": "total_time_played",
                "value": 1952281
            so on and so on...

我现在访问它的方式是使用:

$kills = $jsonforgame['playerstats']['stats'][0]['value'];
$deaths = $jsonforgame['playerstats']['stats'][1]['value'];

问题在于我有数百个统计数据'在数组中,有没有办法使用名称(如total_kills& total_deaths)访问所有值,而不必计算所有数组?

感谢阅读:)

3 个答案:

答案 0 :(得分:2)

从多维数组中选择统计数据:

$searchName = 'total_kills';

$stat = $jsonforgame['playerstats']['stats'][array_search($searchName, array_column($jsonforgame['playerstats']['stats'], 'name'))];

答案 1 :(得分:0)

使用array_search

$stats_array = $jsonforgame['playerstats']['stats'];
$key = array_search('total_deaths', array_column($stats_array, 'name'));
$deaths = $stats_array[$key]['value'];

echo var_dump($key).PHP_EOL;
echo var_dump($stats_array[$key]).PHP_EOL;
echo var_dump($deaths).PHP_EOL;

答案 2 :(得分:0)

您可以更改stats数组的结构,使用stat name作为数组键,如下所示:

"playerstats": {
    "steamID": "MyID",
    "gameName": "ValveTestApp260",
    "stats": {
        "total_kills": 35342,
        "total_deaths": 30465,
        "total_time_played": 1952281
    }
}

然后您可以使用

进行访问
$kills = $jsonforgame['playerstats']['stats']['total_kills'];