我有两个多维数组,我想使用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代替吗?
您可以在调用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];
还有更多可能的情况