2016-07-31 12 views
0

私は、オブジェクトである値を持つキーを含むオブジェクトを持っています。それらのオブジェクトの中には、キーの1つの値として別のオブジェクトがあります。私は4つのループを実行することによって必要な深いネストされたオブジェクトから特定の価値を得ることができましたが、そうするより良い方法があるのだろうかと思っていました。ここで私が持っているオブジェクトがある:他のオブジェクトの中のオブジェクトをループする

{ 
    record1: { 
    key1: value1, 
    key2: value2, 
    key3: { 
     key_x1: value_x1, 
     key_x2: value_x2, 
     key_x3: value_x3 
    } 
    } 
    record2: { 
    key1: value1, 
    key2: value2, 
    key3: { 
     key_x1: value_x1, 
     key_x2: value_x2, 
     key_x3: value_x3 
    } 
    } 
} 

ので、各レコード(record1record2など)のために私はkey_x1から値を引き出し、配列に保存する必要があります。 4 foreachループを持たないでこれを達成する方法に関するアイデア?

編集:ここでは、私はちょうど醜いた作品、持っているものです。

$mainObject 
    $a = []; 
    $dateArray = []; 

    foreach ($mainObject as $individualOb) { 
     $dates = $individualOb->getDate(); 
     $a[] = $dates; 
    } 

    if (empty($a)) { 
     return true; 
    } else { 
     foreach ($a as $date) { 
      foreach ($date as $key => $value) { 
       if ($key == 'date') { 
        $dateArray[] = $value; 
       } 
      } 
     } 
     foreach ($dateArray as $value) { 
      if(strtotime($value) < strtotime('-1 year')) { 
       return true; 
      } 
     } 
    } 
+0

をあなたは間違っている問題と、どのようなエラーが発生し、あなたが受け取った結果を解決しようとしてきた方法のいくつかの努力を示してください。 – alexi2

+0

それはjsonの文字列ですか? – RomanPerekhrest

+1

[オブジェクトを配列に変換するにはどうすればよいですか?](http://stackoverflow.com/questions/2476876/how-do-i-convert-an-object-to-an-array) – user2182349

答えて

0

あなたが巣のようなループができます:あなたが返すようにしたい理由

foreach ($mainObject as $individualOb) { 
    foreach ($individualOb->getDate() as $key => $value) { 
     if ($key == 'date' && strtotime($value) < strtotime('-1 year')) { 
      return true; 
     } 
    } 
} 

が、私はわからないtrue要素がない場合は、falseというより論理的です。とにかくあなたがまっすぐ$mainObjectにそのテストを行うことができます。

if (empty($mainObject)) { 
    return true; 
} else // ...etc. 
+0

は今のところ返品を無視します。これらのループは、実際に私が他の場所で呼び出している関数にあります。しかし、あなたが投稿したスニペットの点では、私はオリジナルは各ループのためにネストしようとしていました。私の問題は、2番目のforeachループでキー値のペアリングを使用しなかったことだと思います。私はこのコードを試して、あなたに戻ってきます。 :) –

+0

あなたのコードがfalse/trueを返すことでない場合、私の答えは適切ではないかもしれません。しかし、より関連性の高いコードで質問を更新してください。 – trincot

+0

編集:ちょうどそれを試してみて、それは魅力のように動作します。あなたは天才です:) 編集2:mainObjectは常にその中に1つのキーを持っていますが、それは私が今解決する方法を知っていると思う空であることができます:)もう一度、ありがとう! –

関連する問題