我使用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对调用函数,即function($x, $y) { print $x['title'] . ", " . $y['title']; return 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;});
感谢。