簡體   English   中英

使多維數組唯一並保持其結構

[英]Make mulitdimensional array unique and keep its structure

我有一個多維數組,其中包含多個會話ID和一個字段數據數組,如下所示:

Array 
(
    [102] => Array
        (
            [session_id] => A11.. etc
            [fields] => Array
                (
                    [0] => Array
                        (
                            [date_time] => 2013-03-25 16:28:56
                            [ip_address] => xx.xxx.x.xxx
                            [user_name] => public.static
                            [session_type] => Start
                        )

                    [1] => Array
                        (
                            [date_time] => 2013-03-25 16:28:56
                            [ip_address] => xx.xxx.x.xxx
                            [user_name] => public.static
                            [session_type] => Start
                        )

如您所見,前2個字段數組記錄保存相同的數據。 到目前為止,我已經編寫了以下PHP代碼以使其具有唯一性並按日期對其進行排序。

for($i = 0; $i<count($unsortedOutput); $i++) {
    usort($unsortedOutput[$i]['fields'], 'sortFunction');
    $unique[] = array_map('unserialize', array_unique(array_map('serialize', $unsortedOutput[$i]['fields'])));
}

這可行,但是當我打印$unique數組時,它(按預期方式)刪除了[session_id][fields]鍵:

Array 
(
    [102] => Array
        (
            [0] => Array
                (
                    [date_time] => 2013-03-25 16:28:56
                    [ip_address] => 94.229.1.233
                    [user_name] => public.static
                    [session_type] => Start
                )

我的問題是:

如何在保持整個結構的同時使多維數組唯一。 我覺得我已經接近了,但無法弄清其余的一切。

或者,您也可以將foreach&引用結合使用以進行每個更改:

foreach($unsortedOutput as &$o) {
    usort($o['fields'], 'sortFunction');
    $o['fields'] = array_map('unserialize', array_unique(array_map('serialize', $o['fields'])));
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM