2 个数组的交集,即使拼写错误

Intersection of 2 arrays even if misspelled

$a = array('apple', 'banana', 'orange'); //etc...
$b = array('papel', 'abanan', 'grape');  //etc...

输出应该是'apple', 'banana'.....你需要使用一些内置的数组方法。

在第二个数组中,请注意单词 'apple' 和 'banana' 拼写错误。 'papel'、'abanan'也可以是'leppa'、'nnaab'等格式,但必须包含对应单词的所有字母。

好的,所以你说 "unique" 这意味着 差异 但你的示例显示 交叉点 。如果您需要它,请改用 array_udiff()

$result = array_uintersect($a, $b,  function($a, $b) {
                                        $a = str_split($a);
                                        $b = str_split($b);
                                        sort($a);
                                        sort($b);
                                        implode($a);
                                        implode($b);

                                        if($a == $b) {
                                            return 0;
                                        } elseif ($a > $b) {
                                            return 1;
                                        } else {
                                            return -1;
                                        }
                                    });
  • 将字符串拆分为数组
  • 对数组进行排序
  • 爆回字符串
  • 比较字符串
  • 通过 array_uintersect() returns 中 $b
  • 中的 $a 元素调用

产量:

Array
(
    [0] => apple
    [1] => banana
)