Php 合并包含相同名称的对象数组中的元素

Php 合并包含相同名称的对象数组中的元素,php,arrays,object,Php,Arrays,Object,如何从同名对象数组中删除元素,使其只存在一次 在下面的示例中,我希望删除元素2,因为该名称与元素0相同。 (对我来说,术语id或计数不同并不重要) 如果对象的“name”属性是公共的,如下所示: $filteredObjArr = array(); $existNames = array(); foreach($objArray as $k => $obj) { if(!in_array($obj->name, $existNames)) { $filteredObjAr

如何从同名对象数组中删除元素,使其只存在一次

在下面的示例中,我希望删除元素2,因为该名称与元素0相同。 (对我来说,术语id或计数不同并不重要)


如果对象的“name”属性是公共的,如下所示:

$filteredObjArr = array();
$existNames = array();
foreach($objArray as $k => $obj) {
  if(!in_array($obj->name, $existNames)) {
    $filteredObjArr[$k] = $obj;
    $existNames[] = $obj->name;
  }
}
$objArray
是原始数组,
$filteredObjArr
是您需要的

如果“name”属性不是公共的,请使用方法返回“name”,而不是
$obj->name
。例如:

$obj->getName(); //this method name is example
如果类没有返回“name”的方法,则必须添加它:

Class OriginalClass {

    //...something

    // add
    public function getName() {
        return $this->name;
    }
}
如果不想更改原始类,请扩展它:

Class ExtendedClass extends OriginalClass {
    public function getName() {
        return $this->name;
    }
}

你是在寻找代码来定位那些重复的对象,还是仅仅是
unset($arr[2])
部分?我认为这行不通。名称数组从何而来?加上我有一个对象数组。。。
Class ExtendedClass extends OriginalClass {
    public function getName() {
        return $this->name;
    }
}