0

PHP array_intersect 関数を使用して交差させたい 2 つの多次元配列がありますが、これを出力する前に、配列の 1 つの要素のみを置き換える必要もあります。

例:

$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 を使用して行うことができますか?

4

1 に答える 1

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];

そして、さらに多くの可能性のあるケースがあります。

于 2013-04-07T15:33:03.810 に答える