2012-11-05 196 views
1

我有一個這樣的輸出:PHP stdClass的訪問

stdClass Object 
(
    [GetMatchdataByLeagueDateTimeResult] => stdClass Object 
     (
      [Matchdata] => Array 
       (
        [0] => stdClass Object 
         (
          [teamId] => 40 

在foreach循環

foreach ($allMatches as $match): 

我竟被現在喜歡用數據來工作像如下:

if ($match->idTeam1 == $teamId || $match->idTeam2 == $teamId): 

但我得到這個錯誤:

Trying to get property of non-object

原因是,Matchdata數組包含大約60多個條目,我想過濾那些在給定ID處的[idTeam1][idTeam2] ==。

因爲我只能得到5到7個條目。

使用stdClass對象時,最好的方法是什麼?

請幫忙!

謝謝!

+0

'idTeam1'和'idTeam2'聲明在哪裏?你的對象結構是什麼? – Tchoupi

+0

您的輸出示例(假設它是$ allMatches?)與您的僞代碼不匹配。 teamId vs idTeam1 - idTeam1從哪裏來? – pp19dd

+1

'$ match [0] - > idTeam1'有效嗎? –

回答

0

假設$response是您發佈的結構:

$teamId = 99; // target teamId 

foreach($response->GetMatchdataByLeagueDateTimeResult->MatchData as $match) 
{ 
    if ($match->idTeam1 == $teamId || $match->idTeam2 == $teamId) 
    { 
     // this `$match` has the target $teamId - do something 
    } 
} 
0

OK,我很簡單盲目的: 的foreach($ allMatches-> GetMatchdataByLeagueDateTimeResult-> Matchdata爲$ ID => $匹配): 調試($ ID); debug($ match-> idTeam1);

現在這個工作的:if($匹配 - > idTeam1 == $ teamId || $匹配 - > idTeam2 == $ teamId)...

非常感謝反正!

0

您的外部結構是一個對象,因此您可能正在迭代對象的可見屬性(請參閱此頁面)。如果你想遍歷對象實例中的數組,你應該把它傳遞給你的foreach循環,或者讓你的類實現Iterator接口,並讓它的方法重定向到數組。

<?php 
     foreach ($object->allMatches as $match) { 
       /* Your iterate body here */ 
     }