2016-12-23 6 views
0

私はクライアントページから情報を自動取得するプロジェクトに取り組んでいます。基本的には、他の関数を呼び出し、stdClassオブジェクトに情報を配置する関数です。私は賢いと思って "検索可能"にしましたが、私はいくつかの小さな問題に遭遇しました。ここでネストされたstdClassをデータベースに挿入します

は出力の例です:

stdClass Object 
(
    [ud] => stdClass Object 
     (
      [name] => stdClass Object 
       (
        [svenska] => Uddev 
        [engelska] => uddev 
       ) 

      [biografer] => stdClass Object 
       (
        [0] => stdClass Object 
         (
          [namn] => Drottning. Uddev 
          [id] => 196 
          [salonger] => stdClass Object 
           (
            [0] => stdClass Object 
             (
              [salong] => Vag 1 
              [platser] => 100 platser 
              [ljud] => SOU 
             ) 

            [1] => stdClass Object 
             (
              [salong] => Vag 2 
              [platser] => 100 platser 
              [ljud] => SOU 
             ) 

            [2] => stdClass Object 
             (
              [salong] => Vag 3 
              [platser] => 60 platser 
              [ljud] => SOU 
             ) 

            [3] => stdClass Object 
             (
              [salong] => Vag 4 
              [platser] => 50 platser 
              [ljud] => SOU 
             ) 

            [4] => stdClass Object 
             (
              [salong] => Vag 5 
              [platser] => 50 platser 
              [ljud] => DOLBY 
             ) 

            [5] => stdClass Object 
             (
              [salong] => Vag 6 
              [platser] => 34 platser 
              [ljud] => 
             ) 

           ) 

         ) 

       ) 

     ) 
    [ma] => stdClass Object 
     (
...... And the following object 

あなたが見ることができるように、最初のオブジェクトのインデックス(またはそれが鍵となります)udです。

私はこのような何かができることを考えた:

$test = $crawler->fetchAllArray(); 

foreach ($test as $key => $value) { 
    if($key == 'ud'){ 
     foreach ($value->{ud} as $child => $ud) { # line 295 
      echo "id: $key" . ", name: $ud->name->svenska"; 
     } 
    } 
} 

をそして、それがid: ud, name: Uddevを生成するだろうが、私は次のエラーが表示されます。

私は適切にAからの情報をエコーするにはどうすればよい

Notice: Use of undefined constant ud - assumed 'ud' in test.php on line 295

Notice: Undefined property: stdClass::$ud in test.php on line 295

Warning: Invalid argument supplied for foreach() in test.php on line 295

特定のオブジェクト?

+0

プロパティを使う前に、あなたは 'isset'または' property_exists'でチェックできます。 ($ value-> ud) – ICE

答えて

1

なぜあなたはこれを持っていますか?

$value->{ud} 

あなたはとネストされたオブジェクトにアクセスする必要があります:直接

$test->ud 

として

$value 

かさえも。

2番目のforeachは何ですか?あなたが達成したいことは特にはっきりしませんが、あなたはできます:

foreach ($test as $key => $value) { 
    if($key == 'ud'){ 
      echo "id: $key" . ", name: ". $value->name->svenska; 
     } 
    } 
} 
+0

のように、上記のように変更された場合でも、まだ通知:未定義プロパティ:stdClass :: $ ud'を受け取りました。 – Adam

+0

うん、今私はあなたのオブジェクトを混在して参照してください。 "ud"は$ testのプロパティで、 'foreach'の中に$ valueで表されます。更新された回答をご覧ください。 – yivi

+0

試しましたか?それは動作しますか? – yivi

関連する問題