PHPでは、 array_unique()関数を使用して配列を推測する場合、配列要素の順序が変更される場合があります。重複はアレイから削除されますが、元の順序が破壊され、プログラムの予想される動作に影響します。
重複排除後の配列の要素順序を保持するために、開発者は次の方法を選択できます。
この方法は、交差点を介して元の要素の順序を保存します。
$array
= ['a', 'b', 'c', 'a', 'd'];
$unique_array
=
array_intersect_key
(
$array
,
array_unique
(
$array
));
最初にアレイのキー値をめくると、アレイを再構築することにより、要素の順序を効果的に重複排除して保持できます。
$array
= ['a', 'b', 'c', 'a', 'd'];
$seen_keys
=
array_flip
(
$array
);
foreach
(
$seen_keys
as
$key
=>
$val
) {
$unique_array
[
$key
] =
$array
[
$key
];
}
この方法により、順序が最初に重複排除によって保持され、次にarray_values()を介して配列に再インド化されることが保証されます。
$array
= ['a', 'b', 'c', 'a', 'd'];
$unique_array
=
array_values
(
array_unique
(
$array
));
重複した値を含む配列があるとします。
$array
= ['red', 'green', 'blue', 'red', 'orange'];
Array_unique()を使用して重複排除すると、要素の順序が変更されます。
$unique_array
=
array_unique
(
$array
);
この時点で、要素の順序は次のようになります: ['緑'、「青」、「オレンジ」、「赤」] 。
上記のいくつかの方法を通して、配列要素の順序が保持されるようにすることができます。
$unique_array_intersect
=
array_intersect_key
(
$array
,
array_unique
(
$array
));
その結果、 ['Red'、 'Green'、 'Blue'、 'Orange'] 。
この記事では、PHPアレイの重複排除後のシーケンス変化の問題を解決するための3つの一般的な方法を紹介します。 array_intersect_key()を使用する場合でも、 array_flip()とarray_values()を組み合わせても、配列の注文損失の問題を効果的に解決できます。うまくいけば、これらのソリューションが、開発者がPHPの配列をより効率的に処理するのに役立つことを願っています。