PHP从数组中删除重复对象

PHP从数组中删除重复对象,php,arrays,object,duplicate-removal,Php,Arrays,Object,Duplicate Removal,我尝试了各种各样的PHP逻辑和PHP内置函数来删除重复值,但都不起作用。如果使用array\u unique()in\u array()删除数组中的重复对象,则不会显示任何错误,但我的所有JQuery和CSS都不起作用 这就是我如何在while循环中创建我的person\u row\u数组的方法: $person_row = Person::findByID($pi_claimant_row->person_id); $person_row_array[] = $person_row;

我尝试了各种各样的PHP逻辑和PHP内置函数来删除重复值,但都不起作用。如果使用
array\u unique()in\u array()
删除数组中的重复对象,则不会显示任何错误,但我的所有JQuery和CSS都不起作用

这就是我如何在while循环中创建我的
person\u row\u数组的方法:

$person_row = Person::findByID($pi_claimant_row->person_id);
$person_row_array[] = $person_row;
对象打印\u r如下所示:

Array
(
[0] => stdClass Object
    (
        [id] => 12
        [flat_no] => 
        [house_no] => *
        [street] => 
        [town] => 
        [postcode] => *
        [county] => 
    )

[1] => stdClass Object
    (
        [id] => 14
        [flat_no] => 2
        [house_no] => 33
        [street] => Street
        [town] => Town
        [postcode] => BB
        [county] => County
    )

[2] => stdClass Object
    (
        [id] => 14
        [flat_no] => 2
        [house_no] => 33
        [street] => Street
        [town] => Town
        [postcode] => BB
        [county] => County
    )

[3] => stdClass Object
    (
        [id] => 14
        [flat_no] => 2
        [house_no] => 33
        [street] => Street
        [town] => Town
        [postcode] => BB
        [county] => County
    )

[4] => stdClass Object
    (
        [id] => 15
        [flat_no] => FN
        [house_no] => HN
        [street] => Street
        [town] => Nelson
        [postcode] => PC
        [county] => Manchester
    )

[5] => stdClass Object
    (
        [id] => 15
        [flat_no] => FN
        [house_no] => HN
        [street] => Street
        [town] => Nelson
        [postcode] => PC
        [county] => Manchester
    )

[6] => stdClass Object
    (
        [id] => 16
        [flat_no] => FN
        [house_no] => house
        [street] => Manchester Road
        [town] => Town
        [postcode] => M1 4MK
        [county] => County
    )

)
我想删除那些重复的,请帮助,请不要建议我使用array_unique(),我已经尝试了几个小时没有工作,但如果你能告诉我任何其他方法或添加对象,如果已经不存在

请注意,这是假的数据,我只想删除那些具有类似ID的数组

问候您

请尝试以下代码

function my_array_unique($array, $keep_key_assoc = false){
    $duplicate_keys = array();
    $tmp = array();       

    foreach ($array as $key => $val){
        // convert objects to arrays, in_array() does not support objects
        if (is_object($val))
            $val = (array)$val;

        if (!in_array($val, $tmp))
            $tmp[] = $val;
        else
            $duplicate_keys[] = $key;
    }

    foreach ($duplicate_keys as $key)
        unset($array[$key]);

    return $keep_key_assoc ? $array : array_values($array);
}

您可以使其对任何字段(键)都是唯一的,如id、名称或num

function unique_multidimensional_array($array, $key) {
    $temp_array = array();
    $i = 0;
    $key_array = array();

    foreach($array as $val) {
        if (!in_array($val[$key], $key_array)) {
            $key_array[$i] = $val[$key];
            $temp_array[$i] = $val;
        }
        $i++;
    }
    return $temp_array;
}
这个怎么样

$dedup = function($array, $key) {
  $result = [];
  foreach($array as $i) {
    if(!isset($result[$i->{$key}])) {
      $result[$i->{$key}] = $i;
    }
  }
  // sort($result); <-- Add this if you want to clean up the keys.
  return $result;
};

$persons_without_duplicates = $dedup($person_row_array, 'id');
$dedup=函数($array,$key){
$result=[];
foreach($i数组){
如果(!isset($result[$i->{$key}])){
$result[$i->{$key}]=$i;
}
}

//排序($result);可能重复一行:
array\u map('unserialize',array\u unique(array\u map('serialize',$person\u row\u array))
@自由职业者我说我试过arrayunique如果你听不懂英语,它就不起作用了告诉我你说哪种语言,我会把它翻译成你的语言。。otherwise@UsmanSharifAmjadKhan当您实现correct _utoString()时,它将起作用比较的方法。阅读自由职业者链接的接受答案carefully@UsmanSharifAmjadKhan如果你读了我发给你的链接,那家伙说你必须添加一个toString方法这段代码取自[,对吗?:)@DonJoe你提供的链接不再工作了,它移动了吗?@Seb这个链接:很好,它真的工作得很好