您需要比较多个相互关联的关联数组,例如1:м
. 数组中的所有属性都被划分为具有相似名称的组,例如a1
, a2
, , a3 ,
a4` 等。例如:有主类型的数组
array(
'a1' =>1,
'a2' =>2,
'a3' =>3,
'b1' =>1,
'b2' =>2,
'b3' =>3
);
并且,相应地,一个额外的数组
array(
'0' => array(
'c1' => 2,
'c2' => 1,
'd1' => 1,
'd2' => 2,
),
'1' => array(
'c1' => 3,
'c2' => 4,
'd1' => 4,
'd2' => 5,
)
);
从示例中可以看出,主数组是一个,还有几个附加的。
比较组中的主要和附加数组中的详细信息以不同的方式命名。预先知道哪些细节必须在主阵列和附加阵列中匹配。
所以,需要检查主数组的所有值是否都和附加数组中的值对应。
从例子来看,我们比较了主属性组中的А
一组属性,另外一组属性中的C
[a1] = [0][c2],
[a2] = [0][c1],
[a2] = [1][c1].
SUCCESS 主数组的所有值都在附加数组中找到。
不能对组b
和d
附加组说什么
[b1] = [0][d1],
[b2] = [0][d1], [d2]
- 分别在附加数组中,这是一个错误。所以,如何最好地做到这一点,我无法弄清楚如何最好地比较它,并得到不同意的答案。提前感谢您的好主意:)
我忘记了重要的一点,可以有 1 个额外的数组,也可以有很多(50 个或更多)。以及如果例如Group中А
有3个不同的值,并且它们都在С
附加数组的相应组(在这种情况下)的属性值中找到,那么会发生什么,那么一切都很好, 即使在对应的不同值组的附加数组中存在多于 3 个不同 然后是一个错误。
如果我理解正确,您需要将第一个数组的元素与所有其他数组的元素进行比较,并因此从第一个数组中获得一个不在第二个数组中的元素数组 - 为此您可以使用
array_diff()
它结合array_map()
:结果将是一个二维数组,其中包含第一个数组中没有在第二个数组中找到的元素:
咳咳,让我们用 diff 给出第三个答案,因为我已经编写了代码。
源数组
比较类别
按所需类别过滤源
结果也被过滤了
比较结果
如果
$diff
不为空,那么显然这不是您的算法的成功完成。