2017-10-08 95 views
1

我有一个stdClass物体看起来像这样,我想echosteamid如何在stdClass对象中访问此字符串?

stdClass Object 
(
    [response] => stdClass Object 
     (
      [players] => Array 
       (
        [0] => stdClass Object 
         (
          [steamid] => 76561198039509812 
          [communityvisibilitystate] => 1 
          [profilestate] => 1 
          [personaname] => Mike_Ock_Hurtz 
          [lastlogoff] => 1506899637 
          [profileurl] => http://steamcommunity.com/profiles/76561198039509812/ 
          [avatar] => https://steamcdn-a.akamaihd.net/steamcommunity/public/images/avatars/fe/fef49e7fa7e1997310d705b2a6158ff8dc1cdfeb.jpg 
          [avatarmedium] => https://steamcdn-a.akamaihd.net/steamcommunity/public/images/avatars/fe/fef49e7fa7e1997310d705b2a6158ff8dc1cdfeb_medium.jpg 
          [avatarfull] => https://steamcdn-a.akamaihd.net/steamcommunity/public/images/avatars/fe/fef49e7fa7e1997310d705b2a6158ff8dc1cdfeb_full.jpg 
          [personastate] => 0 
         ) 

       ) 

     ) 

) 

下面是我如何得到上面:

foreach(updateBanList::readFile($file) as $steamprofiles){ 
    $steam = $steamUser->GetPlayerSummariesV2($steamprofiles[0]); 
    print_r($steam); 
    $players = $steam->response->players; 


} 

迄今访问类的我已使用

$players = $steam->response->players; 

这让我到最后array

Array 
(
    [0] => stdClass Object 
     (
      [steamid] => 76561198039509812 
      [communityvisibilitystate] => 1 
      [profilestate] => 1 
      [personaname] => Mike_Ock_Hurtz 
      [lastlogoff] => 1506899637 
      [profileurl] => http://steamcommunity.com/profiles/76561198039509812/ 
      [avatar] => https://steamcdn-a.akamaihd.net/steamcommunity/public/images/avatars/fe/fef49e7fa7e1997310d705b2a6158ff8dc1cdfeb.jpg 
      [avatarmedium] => https://steamcdn-a.akamaihd.net/steamcommunity/public/images/avatars/fe/fef49e7fa7e1997310d705b2a6158ff8dc1cdfeb_medium.jpg 
      [avatarfull] => https://steamcdn-a.akamaihd.net/steamcommunity/public/images/avatars/fe/fef49e7fa7e1997310d705b2a6158ff8dc1cdfeb_full.jpg 
      [personastate] => 0 
     ) 

) 

我想echosteamid,我尝试了几件事情,我知道不管它是我做的是非常简单的,但其在尾盘,我无法弄清楚。

如果我尝试

$players->steamid; 

我得到的错误

注意:试图如果我尝试

$players['steamid']; 

获得非对象

财产我明白了

注意:未定义指数:steamid

我在做什么错?

回答

2

尝试$players[0]->steamid; 你的对象是一个数组

内,如果你相信你会只有数组中得到一个对象元素,然后使用

$player = $steam->response->players[0]; 

$player->steamid;就足够了。

0

$players是对象的索引数组。

试试这个:

print_r($players[0]->steamid); 

还是这个倾倒所有的数组元素:

foreach ($players as $player) { 
    print_r($player->steamid); 
} 
1

你必须使用数组。

$players = $steam->response->players; 
$steamid = $players[0]->steamid; 

或在一行中;

$steamid = $steam->response->players[0]->steamid; 

现在你可以回声出你steamid:

echo $steamid; 

如果您的阵列在一个以上的球员,你必须循环你:

$players = $steam->response->players; 
$steamids = array(); 

foreach ($players as $key => $player) 
{ 
    $steamids[$key] = $player->steamid; 
} 

现在你有一个数组$steamids的Steam ID信息。为了呼应它,你可以这样做:

foreach ($steamids as $key => $steamid) 
{ 
    echo "Player " . $key . " has Steam ID:" . $steamid; 

} 

注意:试图让非对象

的财产现在你明白,未来的数据类型是一个数组,而不是一个对象,它很明显,做类似$players->steamid;会导致错误。

注意:未定义指数:steamid

$players['steamid'];云也无法工作,因为没有钥匙/索引steamid这个数组只有一个主键/索引与价值0

0

$players是数组,您应该访问它对数组元素的属性:

$players[0]->steamid;