我現在有上面的一個陣列數據,想改成下面這樣,可以改嗎?
主要是想把兩個數組中相同的地方合併在一起,然後將不一樣的地方,再重新開個數組存起來
我現在有上面的一個陣列數據,想改成下面這樣,可以改嗎?
主要是想把兩個數組中相同的地方合併在一起,然後將不一樣的地方,再重新開個數組存起來
你這邊應該是要一些特定字段重複取出來用吧,而不是重複的就要可以試試下面這語句
<code> $simiArray = []; foreach($resourceArray as $rVal) { $order_sn = $rVal['order_sn']; $simiArray[$rVal['order_sn']]['order_sn'] = $rVal['order_sn']; $simiArray[$order_sn]['order_add_time'] = $rVal['order_add_time']; $simiArray[$rVal['order_sn']]['pay_amonut'] = $rVal['pay_amonut']; unset($rVal['order_sn']); unset($rVal['order_add_time']); unset($rVal['pay_amonut']); $simiArray[$order_sn]['order_detail'][] = $rVal; } </code>
可以實現,不過標準函式庫裡應該是沒有這種功能的函數的,要自己寫。
現在不方便寫程式碼,就先給個思路吧:
輸入兩個數組的情況下,遍歷第一個數組,如果兩個數組當前 key 的 value 一樣,那就把這個值 push 到一個新數組裡,並且從輸入的兩個數組中刪除這個鍵值。如果兩個陣列中的值不一樣就不用管。
這樣處理完後我們可以得到一個儲存有兩個數組之間相同鍵值對的數組,以及兩個僅儲存不同的內容的數組(因為相同的在上面被刪掉了),最後之要把後兩個數組push 進第一個數組即可。
PS:從陣列中刪除元素可能會有效能問題,可以單開兩個陣列儲存