Сравнить массивы с дублированными значениями

Мне необходимо сравнить (без удаления ЛЮБОГО значения) 2 массива, НО каждый из этих массивов может иметь дублированные значения, например, например, У меня есть эти 2 массива:

$options = ['G', 'W'];
$selectedOptions = ['G', 'G', 'W'];

Это должно вернуться FALSE, Ниже мой код, который у меня есть. Это работает хорошо, но только для уникальных значений, как «обновить» его для дублированных значений?

$mergeOptions = array_merge($selectedOptions, $options);
$intersect = array_intersect($selectedOptions, $options);
$diff = array_diff($mergeOptions, $intersect);

if (count($diff) === 0) {
// $options are 'equal' to $selectedOptions
} else {
// $options are not 'equal' to $selectedOptions
}

Больше примеров:

| selected | options | result |
+----------+---------+--------+
|  G, G, W |  G, W   |  FALSE |
+----------+---------+--------+
|   G, W   |  G, W   |  TRUE  |
+----------+---------+--------+
| G, P, W  | G, G, W |  FALSE |
+----------+---------+--------+
| G, P, G  | P, G, G |  TRUE  |
+----------+---------+--------+

0

Решение

Вы можете сортировать массивы с Сортировать а потом сравни их.

$a = ["P", "G", "G"];
$b = ["G", "P", "G"];
sort($a);
sort($b);

if ($a == $b) {
echo "TRUE \n";
} else {
echo "FALSE... \n";
}
3

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector