2012-03-12 1 views
-1

誰でもこれを行う方法は分かりますか?いくつかの値を設定した多次元配列のループが設定されていません - PHP

私はすべてのオブジェクトが値を持っていない配列をループしようとしています。私が得たいのは、キーがstdClassオブジェクトを指定し、値として "value"を持つ数を保持する配列です。 "値"が指定されていない場合、 "0"を出力する必要があります。

ので、最終的な配列は次のようになります。ここでは

Array ( 
[123456789_123456789] => 192 
[54321_98765] => 0 
[987654321_123456789] => 1292 
[987854321_123456734] => 0 
) 

を元の出力です:

stdClass Object ( 
[123456789_123456789] => stdClass Object ( 
    [data] => Array ( 
     [0] => stdClass Object ( 
     [id] => 123456789_123456789/insights/name_of_metric/period 
     [name] => name_of_metric 
     [period] => lifetime 
     [values] => 
      Array ( 
       [0] => stdClass Object ( 
       [value] => 1292) 
       ) 
     [title] => Lifetime Post Organic Reach 
     [description] => A Description ... 
     [paging] => stdClass Object ( 
     [previous] => https://graph.facebook.com/ALINK 
     [next] => https://graph.facebook.com/ALINK 
)) 

[54321_98765] => stdClass Object ( 
    [data] => Array ( 

     [paging] => stdClass Object ( 
     [previous] => https://graph.facebook.com/ALINK 
     [next] => https://graph.facebook.com/ALINK 
)) 

[987654321_123456789] => stdClass Object ( 
    [data] => Array ( 
     [0] => stdClass Object ( 
     [id] => 987654321_123456789/insights/name_of_metric/period 
     [name] => name_of_metric 
     [period] => lifetime 
     [values] => 
      Array ( 
       [0] => stdClass Object ( 
       [value] => 1292) 
       ) 
     [title] => Lifetime Post Organic Reach 
     [description] => A Description ... 
     [paging] => stdClass Object ( 
     [previous] => https://graph.facebook.com/ALINK 
     [next] => https://graph.facebook.com/ALINK 
)) 

[987854321_123456734] => stdClass Object ( 
    [data] => Array ( 

     [paging] => stdClass Object ( 
     [previous] => https://graph.facebook.com/ALINK 
     [next] => https://graph.facebook.com/ALINK 
)) 
) 

これは私がこれまで試したものです:

$aVar = array(); 
    foreach ($var as $var_1){ 
     foreach ($var_1->data as $var_2){ 
      foreach ($var_2->values as $var_3){ 
    $aVar[] = $var_3->value; 
     } 
    } 
} 

I私は使用する必要があると信じてforeach (var_1->data as $var_2 => $var2_1)

+2

これまでに何を試しましたか?そしてその中で具体的な問題を実行しましたか?たとえば、その価値をチェックするだけで何が妨げられますか? – hakre

+0

ループのロジックが必要ですか?空のオブジェクトを省略するには、is_nullまたはis_setを使用し、nullの場合は値を0に設定します。そうでない場合は値をコピーします。 – evanmcdonnal

+0

あなたはこれまで何を持っていますか、あなたのループはどのように見えますか? – jeroen

答えて

1

あなたが指定されていない別の問題が発生している場合を除きISSET()「言語構築物」とIS_ARRAY()関数は、このシナリオでは、あなたの友人が、あなたの問題は非常に明確ではありません。あなたが必要なもの)

行うには、追加の検証では、次のようなものにのために、各ループあなたの外側を変更以内です:このコードはテストされ

$aVar = array(); 
foreach ($var as $object_key=>$var_1) 
{ 
    if(isset($var_1->data) && is_array($var_1->data)) 
    { 
     foreach ($var_1->data as $var_2) 
     { 
      if(isset($var_2->values) && is_array($var_2->values)) 
      { 
       foreach ($var_2->values as $var_3) 
       { 
        $aVar[$object_key] = $var_3->value; 
       } 
      } 
     } 
    } 
} 

、私は任意の構文エラーをしたとは思いません。

+0

ちょうどニックピッキング: 'isset'は関数ではなく、言語構造です。 ;) – hakre

+0

php.netは違うと言っています:http://uk3.php.net/manual/en/function.isset.php – Jay

+0

それは嘆くことはありません[ノート](http://uk3.php.net /manual/en/function.isset.php#refsect1-function.isset-notes);) - ちょうど参考になりました。 – hakre

関連する問題