从数组中删除重复项

时间:2013-06-16 08:54:06

标签: php arrays duplicates

使用以下数据包含此数据。 我怎样才能向每个人展示一次,然后展示每个人的第一项活动。 我可以使用array_unique()函数,但这也删除了Activity重复项。 我只需要删除那些人的副本。

mainArray = array(
'person' => '1', 'Activity' => 'abc', 
'person' => '1', 'Activity' => 'cba',
'person' => '2', 'Activity' => 'abc',
'person' => '2', 'Activity' => 'cba',
'person' => '3', 'Activity' => 'cba');

我想要这个结果:

person 1 - Activity abc
person 2 - Activity abc
person 3 - Activity cba

抱歉我的阵列看起来像这样:

Array ( [0] => Array ( [Person] => 1 [Activity] => 1 ) 
    [1] => Array ( [Person] => 1 [Activity] => 2 ) 
    [2] => Array ( [Person] => 2 [Activity] => 1 )

2 个答案:

答案 0 :(得分:1)

查看您的数组是否像这样

  $mainArray = Array
   (
     [0] => Array
        (
          [person] => 1
          [Activity] => abc
        )

    [1] => Array
       (
          [person] => 1
          [Activity] => cba
       )

    [2] => Array
       (
          [person] => 2
          [Activity] => abc
       )

    [3] => Array
       (
          [person] => 2
          [Activity] => cba
       )

    [4] => Array
       (
          [person] => 3
          [Activity] => cba
       )
)

然后这是您的解决方案:

$unique_array = array();
$count = 0;
foreach ($mainArray as $array){
 $insert = false;
 if(!empty($unique_array)){
    foreach($unique_array as $u){

        if($u['person'] != $array['person'])
            $insert = true;
        else
            $insert = false;
    }//End of Foreach
 }else
    $insert = true;
 if($insert){
    $unique_array[$count]['person'] = $array['person'];
    $unique_array[$count]['Activity'] = $array['Activity'];
    $count++;
 }
}

答案 1 :(得分:0)

您不能拥有两个或更多具有相同键的值;如果两个键相同,你怎么能单独访问一个单独的键的值?

<?php

$mainArray = array(
'person' => '1', 'Activity' => 'abc', 
'person' => '1', 'Activity' => 'cba',
'person' => '2', 'Activity' => 'abc',
'person' => '2', 'Activity' => 'cba',
'person' => '3', 'Activity' => 'cba');

print_r($mainArray);
?>

以上代码输出以下内容:

Array ( [person] => 3 [Activity] => cba )
// Only the last unique key-value pair is stored in the array

因此,您可能希望以与此类似的格式存储值:

$mainArray = array(
    'person'   => array('1',  '1',  '2',  '2',   '3'),
    'Activity' => array('abc','cba','abc','cba','cba')
    );

这样,您也可以更轻松地获取Activity的相应值(person)。