php stdClass访问

时间:2012-11-05 14:37:55

标签: php arrays object 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):

但是我收到了这个错误:

  

尝试获取非对象的属性

原因是,Matchdata数组包含大约60多个条目,我想过滤掉[idTeam1][idTeam2] ==给定ID的位置。

结果我只能得到5到7个条目。

使用stdClass对象时,最好的方法是什么?

请帮忙!

谢谢!

3 个答案:

答案 0 :(得分: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
    }
}

答案 1 :(得分:0)

好吧,我很简单: foreach($ allMatches-> GetMatchdataByLeagueDateTimeResult-> Matchdata as $ id => $ match):     调试($ ID);     调试($匹配 - > idTeam1);

现在可行:if($ match-> idTeam1 == $ teamId || $ match-> idTeam2 == $ teamId)...

非常感谢!!

答案 2 :(得分:0)

您的外部结构是一个对象,因此您可能正在迭代对象的可见属性(请参阅此页)。如果要遍历对象实例中的数组,则应将其传递给foreach循环,或让您的类实现Iterator接口并将其方法重定向到数组。

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