Мне необходимо сравнить (без удаления ЛЮБОГО значения) 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 |
+----------+---------+--------+
Вы можете сортировать массивы с Сортировать а потом сравни их.
$a = ["P", "G", "G"];
$b = ["G", "P", "G"];
sort($a);
sort($b);
if ($a == $b) {
echo "TRUE \n";
} else {
echo "FALSE... \n";
}
Других решений пока нет …