Unique Merge多维多维数组

时间:2014-12-17 13:39:31

标签: php arrays cakephp multidimensional-array

我在php中合并许多多维数组有些困难。我尝试过很多方式,但每一次,我都没有得到想要的结果。我尝试使用array_merge(array_unique,...),在不同的帖子中我找到了一个使用array_map的方法,但我不了解所有内容......

我可以有很多像下面这样的多数组:

array(
(int) 0 => array(
    'User' => array(
        'username' => 'testje',
        'firstname' => 'jean',
        'lastname' => 'test'
    ),
    'Calendar' => array(
        'period' => 'AM'
    ),
    'Shift' => array(
        'name' => 'HV',
        'color' => '#b7fa00'
    ),
    'Team' => array(
        'name' => 'Proxy_B28'
    )
),
(int) 1 => array(
    'User' => array(
        'username' => 'testje',
        'firstname' => 'jean',
        'lastname' => 'test'
    ),
    'Calendar' => array(
        'period' => 'PM'
    ),
    'Shift' => array(
        'name' => 'HV',
        'color' => '#b7fa00'
    ),
    'Team' => array(
        'name' => 'Proxy_B28'
    )
)
)

我想得到这种阵列:

array(
    'User' => array(
        'username' => 'testje',
        'firstname' => 'jean',
        'lastname' => 'test'
    ),
    'Calendar' => array(
        'period' => 'Full day'
    ),
    'Shift' => array(
        'name' => 'HV',
        'color' => '#b7fa00'
    ),
    'Team' => array(
        'name' => 'Proxy_B28'
    )
)

你有什么建议让我得到这个结果吗?

非常感谢!

1 个答案:

答案 0 :(得分:-1)

我不知道是否是最好的解决方案,但它看起来像这样,并且很快:

            foreach ($users as $k=>$v){             
            //$r[$k] = array_merge($v,$users[$k]);
            //$unique[] = array_map("unserialize", array_unique(array_map("serialize", $users[$k])));

            $s[$k] = array(
                'username' => $v['User']['username'],
                'team'     => $v['Team']['name'],
                'period'   => $v['Calendar']['period']
            );

            if ($k > 0) {
                if (in_array($v['User']['username'],$s[$k])) {
                    unset($s[$k-1]);
                    $s[$k] = array(
                        'username' => $v['User']['username'],
                        'team'     => $v['Team']['name'],
                        'period'   => "FD"
                    );
                }   
            }


        }

你有另一个想法,还是这个想法足够好? 谢谢!