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