php - 在包含多个对象的数组上使用 array_diff()

标签 php arrays object array-difference

我有两个数组。第一个数组保存这些值。

[a] => stdClass Object
    (
        [name] => Chris
        [id] => AaKk4j0abEkJSSxYKKnss2LTZc9BmMDrYmm1TFxkIHR8PSU50OagCsl2pgJjVTm7MrkVBVcJgydJGViRU4HHClyWVm3arL4Y5cdWKyZQHtdltg
    )

[b] => stdClass Object
    (
        [name] => John
        [id] => AaL4_sWesWgGcHsd3eoBB3NDvpekzTQHE1J9zLUJs6zZPY7urzXzuhvA3uWuW0IOGiRJPznFsCIJFzZkm2_vIlSU93njnSwgiJbM1fmI9fUulw
    )

[c] => stdClass Object
    (
        [name] => James
        [id] => AaJ3g8G-nssIY7rhMq6pGMI5989ICREh7_MQ37Vre8oNuaBkO-HFgNUWcH2tZdyFwsWOv_kG4eVliss-FY_HmRFh4gmROJKkFCFKMjzatc_2iw
    )

第二个数组保存这些值。

[d] => stdClass Object
    (
        [id] => 1003880559625244
        [name] => Aftab
    )

[e] => stdClass Object
    (
        [id] => 448636891977424
        [name] => John
    )

[f] => stdClass Object
    (
        [id] => 809530442478820
        [name] => James
    )

[g] => stdClass Object
    (
        [id] => 809530442478820
        [name] => Chris
    )

我正在尝试比较两个数组并仅获取不匹配的值。
例如本例 Aftab是数组 1 中不存在且唯一的那个。
我尝试使用 PHP 中的 array_diff() 函数执行此操作,但它给出了此错误:

Catchable fatal error: Object of class stdClass could not be converted to string

最佳答案

使用array_udiff - 通过使用回调函数进行数据比较来计算数组的差异。 http://us.php.net/array_udiff

function compare_names($a, $b)
{
    return strcmp($a->name, $b->name);
}
$newarr = array_udiff($b, $a, 'compare_names');

关于php - 在包含多个对象的数组上使用 array_diff(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30866539/

相关文章:

javascript - 如何在 yyyy-mm-dd hrs :min:sec format in javascript? 中提醒当前日期

java - firestore 中的数组对象返回 null,而其他字段则不返回 null

c# - Array、ArrayList 和 List 之间有什么区别?

PHP MYSQL 函数有效,但在添加额外参数时中断

php - 如何使用 YouTube Data API v3 检查 YouTube 视频是否存在

java.lang.ArrayIndexOutOfBoundsException : 9 error 异常

java - 如何添加两个对象?

c++ - 为什么运行时堆栈对象的实例变量与堆对象不同?

javascript - PHP 获取对象键

php - 从数据库表中搜索不起作用