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):

しかし、私はこのエラーが発生します:

非オブジェクトのプロパティを取得しようとしています

[idTeam1]理由は、Matchdata 配列に約 60 以上のエントリが含まれているため、特定の IDまたは[idTeam2]==であるエントリを除外したいからです。

その結果、約 5 ~ 7 個のエントリしか取得できません。

stdClass オブジェクトを操作するときにこれを行う最善の方法は何ですか?

助けてください!

ありがとう!!

4

3 に答える 3

0

外部構造はオブジェクトであるため、オブジェクトの表示されているプロパティを繰り返し処理している可能性があります(このページを参照)。オブジェクトインスタンス内の配列を反復処理する場合は、それをforeachループに渡すか、クラスにIteratorインターフェイスを実装させ、そのメソッドを配列にリダイレクトさせる必要があります。

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

Assuming $response is the structure you posted:

$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

OK、私は盲目的でした: foreach ($allMatches->GetMatchdataByLeagueDateTimeResult->Matchdata as $id => $match): debug($id); debug($match->idTeam1);

これが機能するようになりました: if ($match->idTeam1 == $teamId || $match->idTeam2 == $teamId) ...

とにかくありがとうございました!!

于 2012-11-05T14:53:46.603 に答える