1

我有这样的输出:

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]or [idTeam2]== 给定 id 的条目。

结果我应该只得到大约 5 到 7 个条目。

使用 stdClass 对象时完成此操作的最佳方法是什么?

请帮忙!

谢谢!!

4

3 回答 3

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
    }
}
于 2012-11-05T14:50:10.063 回答
0

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

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

还是非常感谢!!

于 2012-11-05T14:53:46.603 回答
0

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

 <?php
       foreach ($object->allMatches as $match) {
              /* Your iterate body here */
       }
于 2012-11-05T14:57:38.327 回答