从对象数组中删除重复项

时间:2014-04-22 15:50:29

标签: php arrays

我有一个如下所示的对象数组:

Array
(
[0] =>Object
        (
            [ClassScheduleID] => 2263
            [Name] => Workout 1
            [Location] => Object
            (
                [BusinessID] => 1
            )
)
[1] =>Object
        (
            [ClassScheduleID] => 2263
            [Name] => Workout 1
            [Location] => Object
            (
                [BusinessID] => 13
            )
)
[2] =>Object
        (
            [ClassScheduleID] => 2264
            [Name] => Workout 2
            [Location] => Object
            (
                [BusinessID] => 22
            )
)

我希望确定2263的ClassScheduleID是重复的,并从数组中删除重复条目的整个对象。所以我得到了:

Array
    (
    [0] =>Object
            (
                [ClassScheduleID] => 2263
                [Name] => Workout 1
                [Location] => Object
                (
                    [BusinessID] => 1
                )
    )

    [1] =>Object
            (
                [ClassScheduleID] => 2264
                [Name] => Workout 2
                [Location] => Object
                (
                    [BusinessID] => 22
                )
    )

我尝试了这里提出的解决方案

How to remove duplicate values from a multi-dimensional array in PHP

但是count()保持不变

2 个答案:

答案 0 :(得分:1)

$count = 0;
foreach($arrayObj as $key => $value) {
    if ($value['ClassScheduleID'] == 2263) {
        $count++;
    }
    if ($count > 1){
        unset($arrayObj[$key]);
        $count--;
    }
}

有效: http://ideone.com/fork/zrdDtu

修改:已修改以删除任何重复项:

foreach($arrayObj as $key => $value) {
    $count = 0;
    foreach($arrayObj as $nkey => $nvalue) {
        if ($value['ClassScheduleID'] == $nvalue['ClassScheduleID']) {
            $count++;
        }
        if ($count > 1){
            unset($arrayObj[$key]);
            $count--;
        }
    }
}

var_dump($arrayObj);

请在此处查看: http://ideone.com/fork/85RCst

答案 1 :(得分:0)

function get_unique_array($array)
{
   $result = array_map("unserialize", array_unique(array_map("serialize", $array)));

   foreach ($result as $key => $value)
   {
      if ( is_array($value) )
      {
        $result[$key] = get_unique_array($value);
      }
   }

   return $result;
}

演示: http://3v4l.org/WOTHi#v430