【发布时间】:2018-12-17 13:43:38
【问题描述】:
我需要比较(不删除任何值)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 |
+----------+---------+--------+
【问题讨论】:
-
不清楚你想做什么或因为这些重复
-
$options = ['G', 'W'];,$selectedOptions = ['P', 'G', 'W'];是结果true或false? -
@Cid 应该返回
FALSE -
@RiggsFolly 这并不完全是重复的,因为他不想删除它们,而是要比较即使存在重复
-
你确定@DavidWinder 吗?似乎是解决方案的最简单途径