【问题标题】:Make mulitdimensional array unique and keep its structure使多维数组唯一并保持其结构
【发布时间】:2015-03-17 11:24:56
【问题描述】:

我有一个多维数组,其中包含多个会话 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
                )

我的问题是:

如何在保持整个结构的同时使我的多维数组独一无二。我觉得我很接近,但无法弄清楚其余的。

【问题讨论】:

  • 然后在得到唯一值后再次重新组合$unsortedOutput[$i]$unsortedOutput[$i]['fields']
  • @Ghost 有道理,但我该怎么做,你能给我一些代码吗?

标签: php arrays multidimensional-array unique


【解决方案1】:

作为替代方案,您还可以使用 foreach&amp; 对每个副本的引用进行更改:

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

【讨论】:

  • 当然@MarijnvanGool 很高兴这有帮助
猜你喜欢
  • 2014-07-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-17
  • 1970-01-01
  • 2021-03-29
相关资源
最近更新 更多