Php 按值获取stdClass对象
鉴于这个stdClass结构Php 按值获取stdClass对象,php,key,stdclass,Php,Key,Stdclass,鉴于这个stdClass结构 [RecentAchievements] => stdClass Object ( [1446] => stdClass Object ( [3319] => stdClass Object ( [ID] => 3319 [GameID]
[RecentAchievements] => stdClass Object
(
[1446] => stdClass Object
(
[3319] => stdClass Object
(
[ID] => 3319
[GameID] => 1446
[Title] => Hello World!
[Description] => Complete World 1-1
[Points] => 15
[BadgeName] => 03909
[IsAwarded] => 1
[DateAwarded] => 2013-10-20 19:35:46
)
我需要检查3319中的对象,比如“Title”,所以它会像:
$data->RecentAchievements->$gameid->ACHVIDHERE->Title;
要获取$gameid,它来自其他对象(最近播放),方法如下:
[RecentlyPlayed] => Array
(
[0] => stdClass Object
(
[GameID] => 1446
[ConsoleID] => 7
[ConsoleName] => NES
[Title] => Super Mario Bros
[LastPlayed] => 2013-10-20 21:38:22
[ImageIcon] => /Images/000385.png
[ImageTitle] => /Images/000272.png
[ImageIngame] => /Images/000387.png
[ImageBoxArt] => /Images/000275.png
)
)
$gameid = $data3->RecentlyPlayed['0']->GameID;
API不允许我使用最近播放的相同内容来获取成就ID,我必须从最近的成就中提取它。有可能吗?您可以使用复杂的卷曲符号来引用对象的动态属性
$data->RecentAchievements->{$gameid}->{$someotherid}->Title;
这应该给你
你好世界
,给定$gameid
=1446
和$someotherid
=3319
,如果您刚刚获得该特定游戏的第一项成就,您可以使用以下技巧:
$firstAchievement = reset($data->RecentAchievements->$gameid);
$title = $firstAchievement->Title;
API可能会给你一个JSON响应,所以你可能也想考虑一下:
$data = json_decode($response, true);
^^^^
第二个参数true
将JavaScript对象转换为PHP数组,这在大多数情况下使处理它们更容易,例如
$firstAchievement = reset($data['RecentAchievements'][$gameid]);
$title = $firstAchievement['Title'];
在我看来,当您需要它来访问该元素时,您不太可能获得该ID。您无法通过现有调用获取更多信息以获取
$gameid
?e、 要求它返回一个包含这两个值的数组?你的意思是将对象转换为数组并提取ID?也许是的,但我在寻找更干净的东西(如果可能的话)。如果我误解了你,很抱歉,但是如何给$someotherid ID值(在这个特定的模型中,3319)?我想ACHVIDHERE是我应该放置成就ID的地方。因此,它将是:data->recentacheements->{$gameid}->{$someotherid}->Title
@DanielLemes如果ACHVIDHERE
的值为3319
和$gameid
=1446
,那么您可以使用$data->RecentAchEditions->{$gameid}->{ACHVIDHER}E->标题代码>。注意变量和常量周围的{}
。是的,但这就是重点:访问[3319]=>stdClass对象,获取值(在这个特殊的对象中,3319)并将其交给变量以创建调用标题的第二部分。ACHVIDHERE只是一个占位符,我不知道如何给它赋值。如果不知道该值,可以使用foreach($key=>object$value)
对其进行迭代。