我需要合并2个查询结果的结果,在第二个查询中,索引缺失。
示例:
query 1: SELECT A.ID AS ID1, B.ID AS ID2 WHERE......
// var_dump();
$result_1 = array(
0 => array(
ID1 => 1,
ID2 => 5
),
1 => array(
ID1 => 5,
ID2 => 4
),
2 => array(
ID1 => 7,
ID2 => 6
),
3 => array(
ID1 => 7,
ID2 => 8
)
);
query 2: SELECT A.ID AS ID1 WHERE......
// var_dump();
$result_2 = array(
0 => array(
ID1 => 5
),
1 => array(
ID1 => 9
),
2 => array(
ID1 => 10
)
);
我想在查询2中为每个索引自动插入NULL值:ID2 => NULL所以我可以合并:
$result_3 = array_merge($result_1, $result_2);
我可以使用查询,还是我必须在执行query2后迭代$ result_2?
像:
foreach ( $result_2 as $i => $v ) {
$result_2[$i]["ID2"] = NULL;
}
$result_3 = array_merge($result_1, $result_2);
我的目标,顺便说一下,就是有了这个结果:
$result_3 = array(
0 => array(
ID1 => 1,
ID2 => 5
),
1 => array(
ID1 => 5,
ID2 => 4
),
2 => array(
ID1 => 7,
ID2 => 6
),
3 => array(
ID1 => 7,
ID2 => 8
),
4 => array(
ID1 => 9,
ID2 => NULL
),
5 => array(
ID1 => 10,
ID2 => NULL
)
);
您可以看到我没有从$ result_2插入索引0,因为ID1已经插入且ID2为NULL。
编辑:我已经写过这个解决方案了。它有效,但我想知道在性能方面是否有一个好的解决方案:$result_2 = //resultset of SELECT A.ID AS ID1, NULL AS ID2 ....
$result_3 = $result_1;
foreach ( $result_2 as $i => $v ) {
if ( !in_array($v['ID1'],array_column($result_1, "ID1")) ) {
$result_3[] = $result_2[$i];
}
}
答案 0 :(得分:2)
您可以更改您的选择,以便选择NULL作为第二个值...
SELECT A.ID AS ID1, null as ID2 WHERE