php数组_diff无法处理值对象集合

php数组_diff无法处理值对象集合,php,Php,它的输出: var_dump($this->externalProjects); var_dump($this->projects); $result = array_diff($this->externalProjects, $this->projects); print_r($result); 要比较这样的对象,您应该查看array\u udiff。这两个函数之间的主要区别在于array\u udiff

它的输出:

        var_dump($this->externalProjects);
        var_dump($this->projects);
        $result = array_diff($this->externalProjects, $this->projects);
        print_r($result);

要比较这样的对象,您应该查看
array\u udiff
。这两个函数之间的主要区别在于
array\u udiff
将回调函数作为参数,然后用于比较对象

请看文件。

示例

array (size=6) // external projects
  0 => 
    object(CloseCall\ValueObject\Project)[79]
      private 'name' => string '(A11) Tyre Pyrolysis Plant, Civil, Mech & Elec' (length=46)
  1 => 
    object(CloseCall\ValueObject\Project)[80]
      private 'name' => string '(B) - Millerhill New Depot Proposal' (length=35)
  2 => 
    object(CloseCall\ValueObject\Project)[81]
      private 'name' => string '(B13) Port of Tyne Wood Pellet Handling Facilities' (length=50)
  3 => 
    object(CloseCall\ValueObject\Project)[82]
      private 'name' => string '(C) - Millerhill Proposed New Depot' (length=35)
  4 => 
    object(CloseCall\ValueObject\Project)[83]
      private 'name' => string '(S) - EGIP New Depot Proposal' (length=29)
  5 => 
    object(CloseCall\ValueObject\Project)[85]
      private 'name' => string '00352 Allerton - Building fabric & structure survey' (length=51)
array (size=1) //projects
  0 => 
    object(CloseCall\ValueObject\Project)[15]
      private 'name' => string '(A11) Tyre Pyrolysis Plant, Civil, Mech & Elec' (length=46)

// no output for array_diff

此函数检查每个数组键值是否相同,如果相同,则返回0,该值
array\u udiff
将从比较数组中删除该对象。

尝试
array\u diff\u assoc(),我不想比较这些键——我认为这可能是array_diff的首要问题,但显然不是。我不确定array_diff是否能够比较对象。我真的不确定向下投票的原因是什么。也许你的数组没有差异,所以它没有输出。我不会否决你的问题。
int comparison(Array $a, Array $b){
    if ($a['id']==$b['id'] && $a['other']==$b['other'] && $a['timestamp']==$b['timestamp']){
        return 0
    }else{
        return -1
    }
}    

array_udiff($a, $b, 'comparison')