2

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

例如:

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);

所以我需要做的是比较一个对象的属性(变量->姓和年龄),如果两个对象的年龄和变量->姓相似,我们需要删除这些对象中的一个。

一半solution是:

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

print_r($tmp);

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

4

1 回答 1

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);
?>

从这里引用

于 2013-02-26T10:21:39.327 回答