2014-04-14 283 views
0

我有两个有多行的表。我想这两个表的行组合成将被认定为一个阵列的一个多头排列 我写了这个代码如何将两个或多个mysql数组合并成一个

$posts_sql = $db->query("SELECT * FROM posts WHERE id < $lastpost AND position = submitter order by id DESC LIMIT 5"); 
$posts_all = $db->fetch_all($posts_sql); 
foreach($posts_all as $key => $posts_row){ 
$users_sql = $db->query("SELECT username,firstname,lastname,avatar FROM users WHERE username = '".$posts_row['submitter']."'"); 
$users_all = $db->fetch_assoc($users_sql); 
$data[] = $posts_row; 
$data[] = $users_all; 
} 

echo json_encode($data); 

它让重复阵列不正确的......

这是我的结果如何显示

[{ 
"id":"39", 
"hash":"070fcc8e73ba5f549f87", 
"post":"hello\n", 
"files":"", 
"location":", 
"GB","status":"1", 
"position":"dabblos", 
"submitter":"dabblos", 
"source":"text", 
"ip":"37.130.227.133", 
"stamp":"1390197699" 
}, 
{ 
"username":"dabblos", 
"firstname":"dabb", 
"lastname":"los", 
"avatar":"no_avatar.png" 
}] 

请帮我做它只是一个多头排列

我想看到的输出看起来像这样

{ 
"id":"39", 
"hash":"070fcc8e73ba5f549f87", 
"post":"hello\n", 
"files":"", 
"location":", 
"GB","status":"1", 
"position":"dabblos", 
"submitter":"dabblos", 
"source":"text", 
"ip":"37.130.227.133", 
"stamp":"1390197699" 
"username":"dabblos", 
"firstname":"dabb", 
"lastname":"los", 
"avatar":"no_avatar.png" 
} 
+0

重复的阵列? –

+0

说我想呈现头像,它使它呈现两次,如果使用IMG标签html –

+0

你能告诉我们,你想如何输出看起来像? –

回答

1

未经测试:

$posts_sql = $db->query("SELECT * FROM posts WHERE id < $lastpost AND position = submitter order by id DESC LIMIT 5"); 
$posts_all = $db->fetch_all($posts_sql); 
foreach($posts_all as $key => $posts_row) { 
    $users_sql = $db->query("SELECT username,firstname,lastname,avatar FROM users WHERE username = '".$posts_row['submitter']."'"); 
    $users_all = $db->fetch_assoc($users_sql); 
    $data[] = $posts_row; 
    foreach($users_all as $user) 
    $data[] = $user; 
    } 
} 


echo json_encode($data); 

// when you use json_decode use the 'true' flag as in 
// $decodedJson = json_decode($json, true); 
+0

我只是得到第一行每个表 –

+0

现在它是空的用户表 –

+0

非常接近,现在看起来像这样 http://en.wetube。org/tubes/test/test –

0

合并他们,你json_encode他们面前:

$data[] = $posts_row; 
$data2[] = $users_all; 

$result = array_merge($data,$data2); 

echo json_encode($result); 
+0

不,它实际上使情况变得更糟...... 现在它循环data1之前,它跳转到data2 –

2

看看这个,我已经采取了示例值,它是作为你想

工作正常
$arr=array(array("abc"=>"1","def"=>"2"),array("abcc"=>"11","deff"=>"22")); 

echo json_encode($arr); 
$final = array(); 
foreach($arr as $item) { 
    $final = array_merge($final, $item); 
} 
print_r($final); 

输出

[{"abc":"1","def":"2"},{"abcc":"11","deff":"22"}]//json_array 

Array ([abc] => 1 [def] => 2 [abcc] => 11 [deff] => 22)//final array 

UPDATE

json_encode最终数组,你会得到期望的结果

echo json_encode($final); 

输出

{"abc":"1","def":"2","abcc":"11","deff":"22"} 
+0

这就是我的当前输出看起来像 [{“abc”:“1”,“def”:“2”},{“abcc”:“11”,“deff”:“22 “}] 我只想要这个 {”abc“:”1“,”def“:”2“,”abcc“:”11“,”deff“:”22“} –

+0

我不想php数组,我想要json数组... –

+0

@MustafaMJalal然后'json_encode()'它呢? – Darren

相关问题