【问题标题】:How to fetch specific fields from array using file_get_contents如何使用 file_get_contents 从数组中获取特定字段
【发布时间】:2014-02-06 07:52:17
【问题描述】:

我想获取玩家字段:

例如 id、名称、标签、平台等

我有这种类型的数据:

stdClass Object
(
    [player] => stdClass Object
        (
            [id] => 179203896
            [game] => bf4
            [plat] => pc
            [name] => HeLLTiMe
            [tag] => DK
            [dateCheck] => 1391437377733
            [dateUpdate] => 1391437377733
            [dateCreate] => 1386696304438
            [lastDay] => 20140117
            [country] => 
            [countryName] => 
            [rank] => stdClass Object
                (
                    [nr] => 73
                    [imgLarge] => bf4/ranks/r73.png
                    [img] => r73
                    [name] => Chief Warrant Officer Five III
                    [needed] => 4920000
                    [next] => stdClass Object
                        (
                            [nr] => 74
                            [img] => r74
                            [name] => Chief Warrant Officer Five IV
                            [needed] => 5030000
                            [curr] => 5022060
                            [relNeeded] => 110000
                            [relCurr] => 102060
                            [relProg] => 92.781818181818
                        )

                )

            [score] => 5025100
            [timePlayed] => 862027
            [uId] => 2832659368608119092
            [uName] => HeLLTiMe
            [uGava] => 0b8b00021ebfb32414e5a6051c2c9a40
            [udCreate] => 1328606863000
            [blPlayer] => http://battlelog.battlefield.com/bf4/soldier/HeLLTiMe/stats/179203896/pc/
            [blUser] => http://battlelog.battlefield.com/bf4/user/HeLLTiMe/
            [editable] => 
            [viewable] => 1
            [adminable] => 
            [linked] => 
        )

    [stats] => stdClass Object
        (
            [reset] => stdClass Object
                (
                    [lastReset] => 0
                    [score] => 0
                    [timePlayed] => 0
                    [timePlayedSinceLastReset] => 0
                    [kills] => 0
                    [deaths] => 0
                    [shotsFired] => 0
                    [shotsHit] => 0
                    [numLosses] => 0
                    [numWins] => 0
                )

如何获取这些数据?

这是我的代码:

<?php
$url = "http://api.bf4stats.com/api/playerInfo?plat=pc&name=HeLLTiMe";
$json = file_get_contents($url);

$data = json_decode($json);
echo "<pre>";
print_r($data);
?> 

【问题讨论】:

    标签: php arrays json object


    【解决方案1】:

    要获得名称,您应该这样做:

    echo $data->player->name;
    

    你需要这个,因为你有一个stdClass Object

    你也可以把 out 改成一个数组,你必须改变这个:

    $data = json_decode($json);
    

    到这里:

    $data = json_decode($json, true);
    

    当你做这个 chagne 时,你可以通过这个获得价值:

    echo $data['player']['name'];
    

    编辑

    您可以在下面看到示例,这对我来说没有错误。

    $url = "http://api.bf4stats.com/api/playerInfo?plat=pc&name=HeLLTiMe";
    $json = file_get_contents($url);
    
    echo 'Using stdClass Object option<br>';
    $data = json_decode($json);
    echo $data->player->name;
    
    echo '<br><br>Using Array option<br>';
    $data = json_decode($json, true);
    echo $data['player']['name'];
    
    exit;
    

    【讨论】:

    • 回声 $data['player']['name'];正在返回空结果
    • 并回显 $data->player->name;正在生成错误:尝试在第 8 行的 E:\test\api.php 中获取非对象的属性
    【解决方案2】:
    $result = array();
    
    $result['name'] = $data->Player->name
    
    var_dump($result);
    

    【讨论】:

    【解决方案3】:

    不知道获取已经获取的数据是什么意思,但如果你问如何访问这些字段,你可以这样做。

    print_r($data->player->name);
    

    【讨论】:

    • 我只想访问一些字段,例如姓名、平台等。
    • 你的答案也是生成错误:尝试在第 8 行的 E:\test\api.php 中获取非对象的属性
    猜你喜欢
    • 2019-07-24
    • 1970-01-01
    • 1970-01-01
    • 2011-07-03
    • 2012-03-06
    • 1970-01-01
    • 1970-01-01
    • 2023-03-11
    • 2014-09-10
    相关资源
    最近更新 更多