2011-08-09 24 views
0

私の関数では、$var1に格納されている投稿のデータベースからのクエリです。そして、投稿の画像のデータベースからの質問を$var2に格納する。 (それぞれに接続するためにpost_idというキーがあります)多次元配列への追加PHP

$var1のようなものが返されます。

array (
    [0] => stdClass Object 
    (
     [post_id] => 210 
     [post_title] => title 
    ) 
    [1] => stdClass Object 
    (
     [post_id] => 212 
     [post_title] => title 
    ) 
) 

$var2はこのような何かを返します。

array (
    [0] => stdClass Object 
    (
     [post_id] => 210 
     [post_meta_key] => image 
     [post_meta_value] => image_value 
    ) 
    [1] => stdClass Object 
    (
     [post_id] => 212 
     [post_meta_key] => flag 
     [post_meta_value] => flag_value 
    ) 
    [2] => stdClass Object 
    (
     [post_id] => 210 
     [post_meta_key] => image 
     [post_meta_value] => image_value 
    ) 
    [3] => stdClass Object 
    (
     [post_id] => 102 
     [post_meta_key] => image 
     [post_meta_value] => image_value 
    ) 
) 

私は$var1からforeachとを作成したいと思います$var1より$var1[post_id] = $var2[post_id]は、私はこれを行うことができますどのようにこの

array (
    [0] => stdClass Object 
    (
     [post_id] => 210 
     [post_title] => title 
     [image] => stdClass Object 
      (
       [0] => image_value 
       [1] => image_value 
      ) 
    ) 
    [1] => stdClass Object 
    (
     [post_id] => 212 
     [post_title] => title 
    ) 
) 

のようなものに編集される場合には?ここでのオブジェクトの代わりに

+0

あなたの質問を変更して、関連するすべてのデータ? – TJHeuvel

+0

2番目のクエリが同じ 'post_id'に対して異なる' post_meta_key'を持つことができるので、私は気にしません。 'post_id' = 200のように' post_meta_key '=フラグと 'post_meta_key' = image ...を持つことができます – cnotethegr8

答えて

1
foreach ($var1 as &$post1) 
{ 
    foreach($var2 as $post2) 
    { 
    if ($post1->post_id == $post2->post_id) 
    { 
     $post1->image = (object)array(
     $post2->post_meta_value 
     ); 
    } 
    } 
} 
0

より良い使用アレイ:

foreach ($var2 as $key2=>$var2){ 
    if (!empty($var1[$key2])){ 
     $var1[$key2]['image']->$var2; 
    } 
} 

あなたは配列をキャストし、

$array = (array)$object; 
$object = (object)$array; 
0

で前後にオブジェクトができこれが何をしたいです:

foreach ($var1 as $v1) 
{ 
    foreach ($var2 as $v2) 
    { 
     if ($v1['post_id'] == $v2['post_id']) 
      $v1['image'][] = $v2['post_meta_value']; 
    } 
}