从数组中删除类似的对象?

时间:2013-02-26 10:10:14

标签: php arrays

我有一个对象数组,但我需要通过它们的一些属性删除类似的对象:

例如:

array(12) {
  [0]=>
  object(stdClass)#848 (5) {
    ["variant"]=>
    object(stdClass)#849 (4) {
      ["name"]=>
      string(8) "Alex"      
    }
    ["age"]=>
    int(10)
  }
  [1]=>
  object(stdClass)#851 (5) {
    ["variant"]=>
    object(stdClass)#852 (4) {
      ["name"]=>
      string(8) "Alex"
    }
    ["age"]=>
    int(10)
  }

如何在数组中创建一个对象(例如,我需要仅通过名称属性进行比较?)

仍有问题。

更新

我创建了一个新的对象数组:

$objects = array(
    (object)array('name'=>'Stiven','age'=>25,'variant'=>(object)array('surname'=>'Sigal')),
    (object)array('name'=>'Michael','age'=>30,'variant'=>(object)array('surname'=>'Jackson')),
    (object)array('name'=>'Brad','age'=>35,'variant'=>(object)array('surname'=>'Pit')),
    (object)array('name'=>'Jolie','age'=>35,'variant'=>(object)array('surname'=>'Pit')),
);
echo "<pre>";
print_r($objects);

所以我需要做的是比较一个对象属性(变体 - >姓氏和年龄),如果两个对象具有相似的年龄和变体 - &gt;姓氏,我们需要删除其中一个对象。

solution的一半是:

$tmp = array();
foreach ($objects as $item=>$object)
{
    $tmp[$object->variant->surname][$object->age] = $object;
}

print_r($tmp);

不幸的是,我需要一个旧式的对象数组。

1 个答案:

答案 0 :(得分:0)

我找到了一个例子。

<?php
 $a = array ( 
    0 => array ( 'value' => 'America', ), 
    1 => array ( 'value' => 'England', ),  
    2 => array ( 'value' => 'Australia', ), 
    3 => array ( 'value' => 'America', ), 
    4 => array ( 'value' => 'England', ), 
    5 => array ( 'value' => 'Canada', ), 
);

$tmp = array ();

foreach ($a as $row) 
    if (!in_array($row,$tmp)) array_push($tmp,$row);

print_r ($tmp);
?>

引自here