PHP与两个数组相交并替换一个项目

时间:2013-04-07 15:21:30

标签: php multidimensional-array array-intersect

我有两个多维数组,我希望使用PHP array_intersect函数进行交叉,但在为此输出之前,它还必须只替换一个数组元素。

示例:

$array1 = Array(
Array(37768201, 273, Array(602, 603, 604, 605, 606), 0),
Array(37483503, 473, Array(604, 605, 606), 0),
Array(37500944, 332, Array(602, 603), 0)
);

$array2 = Array(
Array(37768201, 273, Array(602, 603, 604, 605, 606), 13852),
Array(37483503, 473, Array(603, 604, 605, 606), 13853),
Array(37500944, 332, Array(602, 603, 604, 605), 13854),
Array(37483903, 152, Array(602, 603, 604, 605, 606), 13855),
Array(37483703, 175, Array(602, 603, 604, 605, 606), 13856)
);

array_intersect结果:

$array1 = Array(
Array(37768201, 273, Array(602, 603, 604, 605, 606), 0),
Array(37483503, 473, Array(604, 605, 606), 0),
Array(37500944, 332, Array(602, 603), 0)
);

预期结果:

$array1 = Array(
Array(37768201, 273, Array(602, 603, 604, 605, 606), 13852),
Array(37483503, 473, Array(604, 605, 606), 13853),
Array(37500944, 332, Array(602, 603), 13854)
);

这可以使用array_uintersect istead吗?

1 个答案:

答案 0 :(得分:0)

您可以在致电array_intersect()

后添加一小段代码

对于你的例子:

foreach ($array1 as $key => $values)
  $array1[$key][3] = 13852;

虽然如果你说哪些数据是可变的,那就容易多了。例如,数字13852在每次执行中似乎都是可变的,并且(可能)在每个子数组中($ array2 [0] [3]!= $ array2 [1] [3])。然后该代码将无效,您应该使用此代码:

foreach ($array1 as $key => $values)
  $array1[$key][3] = $array2[$key][3];

还有更多可能的案例。