[請益] 兩陣列 如何join

看板PHP作者 (愛是一種忍耐)時間13年前 (2012/03/16 12:04), 編輯推噓3(3016)
留言19則, 4人參與, 最新討論串1/2 (看更多)
array A [0] => [ 'id' => '001', 'msg' => 'aaaaa' ] [1] => [ 'id' => '002', 'msg' => 'bbbb' ] [2] => [ 'id' => '001', 'msg' => 'cccc' ] [3] => [ 'id' => '002', 'msg' => 'dddd' ] array B [0] => [ 'id' => '001', 'name' => 'Mary', ] [1] => [ 'id' => '002', 'name' => 'John', ] [2] => [ 'id' => '003', 'name' => 'Jay', ] [3] => [ 'id' => '004', 'name' => 'Allen', ] 我想得到的結果是 一個陣列 就是第一個陣列裡也有依照第二個陣列裡的ID 把name對應上去 array result [0] => [ 'id' => '001', 'name' => 'Mary', 'msg' => 'aaaaa' ] [1] => [ 'id' => '002', 'name' => 'John', 'msg' => 'bbbb' ] [2] => [ 'id' => '001', 'name' => 'Mary', 'msg' => 'cccc' ] [3] => [ 'id' => '002', 'name' => 'John', 'msg' => 'dddd' ] 請問有函數有這樣join的功能嗎 或是程式要怎麼寫比較簡潔 -- -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 175.181.46.55

03/16 12:43, , 1F
array_merge
03/16 12:43, 1F

03/16 12:45, , 2F
樓上我剛剛才用 merge 測試完答案是不能
03/16 12:45, 2F

03/16 12:45, , 3F
他會變成一個長度 6 的陣列
03/16 12:45, 3F

03/16 12:46, , 4F
(說錯,我只測 3筆+3筆=6,原PO是4+4=8)
03/16 12:46, 4F

03/16 12:47, , 5F
array_merge根本不可能依照相同key去merge 欄位
03/16 12:47, 5F

03/16 12:49, , 6F
這個的問題應該不是在key,而是他要要求同"ID" combine
03/16 12:49, 6F

03/16 12:49, , 7F
應該只能自己寫 function 下去跑
03/16 12:49, 7F

03/16 13:03, , 8F
寫程式恐怕有問題 要寫兩層foreach 若是一萬筆資料該如何
03/16 13:03, 8F

03/16 13:07, , 9F
如果能把id值 替換到數字索引 0,1,2,3 => 001,002,003,004
03/16 13:07, 9F

03/16 13:08, , 10F
可能簡單一點 不知是否還有其他好辦法
03/16 13:08, 10F

03/16 13:15, , 11F
如果概念是,把id的value先提出來當key,再把所有的array
03/16 13:15, 11F

03/16 13:15, , 12F
merge起來會不會比較好一些?
03/16 13:15, 12F

03/16 13:17, , 13F
不過得先確認一下資料產出的結果是固定還是怎樣,假設id兩組
03/16 13:17, 13F

03/16 13:18, , 14F
會有不同的,這個方法應該就得修正
03/16 13:18, 14F

03/16 14:02, , 15F
先組id=>msg和id=>name兩組陣列出來,然後再合併
03/16 14:02, 15F

03/16 14:03, , 16F
There is no royal way.
03/16 14:03, 16F

03/16 14:30, , 17F
沒看後面的說明 XDDDD
03/16 14:30, 17F

03/16 15:18, , 18F
看過啦 也沒啥別的方法吧 簡不簡潔只有靠寫程式習慣
03/16 15:18, 18F

03/16 15:19, , 19F
這種O(n)的事情很難再精簡了
03/16 15:19, 19F
文章代碼(AID): #1FOhl6qk (PHP)
討論串 (同標題文章)
文章代碼(AID): #1FOhl6qk (PHP)