0
我有以下数组(其中包含多个数据库查询的结果 - 在示例中只有2个,但可以更多) 合并需要由指定列完成(在。这种情况下,日期柱)让我们把这种merge_by列PHP - 通过命名键合并多维数组
Array
(
[0] => Array
(
[0] => Array
(
[date] => 2011-01-17
[col-1] => 58
[col-2] => 54
)
[1] => Array
(
[date] => 2011-01-19
[col-1] => 50
[col-2] => 61
)
[2] => Array
(
[date] => 2011-01-20
[col-1] => 44
[col-2] => 22
)
[3] => Array
(
[date] =>
[col-1] => 448
[col-2] => 196
)
[1] => Array
(
[0] => Array
(
[date] => 2011-01-17
[col-3] => 1489
)
[1] => Array
(
[date] => 2011-01-18
[col-3] => 1534
)
[2] => Array
(
[date] =>
[col-3] => 1534
)
)
)
我试图实现
Array
(
[0] => Array
(
[date] => 2011-01-17
[col-1] => 58
[col-2] => 54
[col-3] => 1489
)
[1] => Array
(
[date] => 2011-01-18
[col-1] =>
[col-2] =>
[col-3] => 1534
)
[2] => Array
(
[date] => 2011-01-19
[col-1] => 50
[col-2] => 61
[col-3] =>
)
[3] => Array
(
[date] => 2011-01-20
[col-1] => 44
[col-2] => 22
[col-3] =>
)
[4] => Array
(
[date] =>
[col-1] => 448
[col-2] => 196
[col-3] => 1534
)
需要考虑的事情:
- merge_by可以采取空值或空字符串值
- merge_by不会有在要合并的阵列相同的值
- 结果在2个查询的数量将有所不同和merge_by值可能不同,所以有可能会遇到
$arr[0][1][date] != $arr[1][1][date]
- LE:除了merge_by列,其他列将各不相同,所以你不会有
$arr[0][0][col-2]
和$arr[1][0][col-2]
所以这样做的目的是通过公共列合并某些查询的列。
来自太多列的太多数据库中的太多数据只能从SQL中获取。我知道...预先计算值:) ...现在不是一个选项。
我设法使它的工作时,列的数量和这些索引匹配。自从尝试了很多选择之后,现在我有一个不适合添加它的版本作为示例。
那么有没有人可以实现上述功能的任何想法?
感谢
作品非常感谢。对其他人可能实现的评论很少:在设置$ diff var值之后,还需要增加$ i_first和$ i_second;我在做 $ merged [] =(array)$ data [0] [$ i_first];和第二次相似; $数据有3个维度,所以还必须包含上面写的其他索引;对于一般字符串,我将diff作为strcmp比较。稍后检查如何使其获得2个以上的结果......应该不那么难。 – Mecca 2011-01-20 17:03:53