Php 数组\u udiff的行为异常

Php 数组\u udiff的行为异常,php,arrays,linq,Php,Arrays,Linq,我使用PHP,有一对关联数组,大致如下: {foo: [{id: 1, title: "one"}, {id: 2, title: "two"}]} {bar: [{id: 2, title: "DEUX"}, {id: 3, title: "TROIS"}]} 我想从第一个数组中排除其ID出现在第二个数组中的任何项,因此,在理智的语言中,它可以表示为: foo = foo.Where(x => !bar.Any(y => x.ID == y.ID)); PHP手册似乎指向arr

我使用PHP,有一对关联数组,大致如下:

{foo: [{id: 1, title: "one"}, {id: 2, title: "two"}]}
{bar: [{id: 2, title: "DEUX"}, {id: 3, title: "TROIS"}]}
我想从第一个数组中排除其ID出现在第二个数组中的任何项,因此,在理智的语言中,它可以表示为:

foo = foo.Where(x => !bar.Any(y => x.ID == y.ID));
PHP手册似乎指向array_udiff作为此作业的工具,因此我可能会使用:

array_udiff($foo, $bar, function($x, $y) { ... });
使用一些合适的函数来比较$x['id']和$y['id']

我希望使用$x和$y的每一对调用该函数,也就是说,函数$x、$y{print$x['title'],.$y['title'];返回0;}将输出如下内容:

一,二 一,特洛伊 二,二 二,特洛伊 $x始终是第一个数组中的值,而$y始终是第二个数组中的值

实际上传入的是来自每个数组的值的完全混合,这对我来说毫无意义,例如

二,一 三重 二,特洛伊 二,一 谁能解释一下发生了什么事

完成生成上述输出的代码:

$foo[] = array('id' => 1, 'title' => 'one');
$foo[] = array('id' => 2, 'title' => 'two');
$bar[] = array('id' => 2, 'title' => 'DEUX');
$bar[] = array('id' => 3, 'title' => 'TROIS');
array_udiff($foo, $bar, function($x, $y) { print $x['title'] . ", " . $y['title'] . "\n"; return 0;});

谢谢。

我看到@1nflktd,它没有回答我的问题。你想知道为什么udiff不在这里工作,还是想用一些函数来排除DUP ID?@1nflktd,主要是前者。