2013-10-21 44 views
3

stdClass的對象...找鑑於這種stdClass的結構值

[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的對象,如 「標題」,所以它會像:

$data->RecentAchievements->$gameid->ACHVIDHERE->Title; 

要獲得$遊戲ID,它來自其他對象(RecentlyPlayed),這樣一來:

[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不要讓我用同樣的RecentlyPlayed得到achievem ent ID,我必須從RecentAchievements中提取它。可能嗎?

+0

對於我來說,當你需要訪問該元素時,你可以獲得該ID似乎不太可能。你現在的電話沒有獲得更多的信息來獲得'$ gameid'嗎?例如請求它返回一個包含兩個值的數組? –

+0

你的意思是將對象轉換爲數組並提取ID?也許是的,但我正在尋找更乾淨的東西(如果可能的話)。 –

回答

4

如果你只是後是該特定遊戲的第一個成就,你可以使用這個黑客:

$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']; 
+0

是的,正是這個,謝謝! –

1

您可以使用複雜的捲曲符號引用一個對象

$data->RecentAchievements->{$gameid}->{$someotherid}->Title; 

這應該給你Hello World!的動態特性,給出$gameid == 1446$someotherid == 3319

+0

對不起,如果我誤解了你,但如何給$ someotherid ID值(在這個特定的模型,3319)? ACHVIDHERE是我應該把成就ID,我想。所以,它會是: 'data-> RecentAchievements - > {$ gameid} - > {$ theotherid} - > Title;' –

+0

@DanielLemes如果'ACHVIDHERE'的值爲'3319'且'$ gameid' = ='1446',那麼你可以使用'$ data-> RecentAchievements - > {$ gameid} - > {ACHVIDHER} E-> Title;'。注意變量和常量周圍的'{}'。 – Musa

+0

是的,但這是關鍵:訪問[3319] => stdClass對象,獲取值(在這個特定的3319),並將其賦予一個變量來創建第二部分,調用標題。 ACHVIDHERE只是一個佔位符,我不知道如何給它的價值。 –

相關問題