我有两个二维数组,我需要用第二个数组的行来过滤第一个数组的行。
$array1 = [
["module1", "path/to/file.txt", ""],
["module2", "path/to/file2.txt", ""],
];
$array2 = [
["module1", "path/to/file.txt", ""]
];
我认为执行array_diff($array1, $array2)
会给予第一个数组的行在第二个数组中找不到的位置,但我得到了一个空数组。
我试着切换参数,仍然产生一个空数组,但这次没有意外。
4条答案
按热度按时间z6psavjg1#
从documentation:
当且仅当
(string) $elem1 === (string) $elem2
时,两个元素被认为相等。换句话说:当字符串表示相同时。echo (string) array();
只提供Array
,因此对于array_diff
,您的数组如下所示:所以要为数组创建一个diff,你需要这样的东西(假设数组中的每个元素本身都是一个数组):
prdp8dxp2#
从array_diff文档。
这个函数只检查n维数组中的一个维度。当然你可以使用array_diff($array1[0],$array2[0])检查更深的维度;
5kgi1eie3#
从array_diff manual page:“这个函数只检查n维数组的一维,当然可以使用array_diff($array1[0],$array2[0])检查更深的维度;.”
9gm1akwq4#
要比较两个2d数组之间的行,请使用
array_udiff()
和3路比较运算符(飞船运算符)。代码:(Demo)
有趣的事实:
array_udiff
被添加到PHP(v5.1)。<=>
)。fn() =>
)。