# Is two arrays are similar?

Problem:

Two arrays are called similar if one can be obtained from another by swapping at most one pair of elements in one of the arrays.

Given two arrays `a` and `b`, check whether they are similar.

Example

• For `a = [1, 2, 3]` and `b = [1, 2, 3]`, the output should be
`areSimilar(a, b) = true`.The arrays are equal, no need to swap any elements.
• For `a = [1, 2, 3]` and `b = [2, 1, 3]`, the output should be
`areSimilar(a, b) = true`.We can obtain `b` from `a` by swapping `2` and `1` in `b`.
• For `a = [1, 2, 2]` and `b = [2, 1, 1]`, the output should be
`areSimilar(a, b) = false`.Any swap of any two elements either in `a` or in `b` won’t make `a` and `b` equal.

Solution:

```function areSimilar(\$a, \$b) {
\$array_difference = array_diff_assoc(\$a, \$b);
if( empty( \$array_difference )) return true;
if( count(\$array_difference) === 2) {
\$b_a_array_difference = array_diff_assoc(\$b, \$a);
\$is_equal = array_diff(\$array_difference, \$b_a_array_difference);
if(!empty(\$is_equal)) {
return false;
}
return true;
}
return false;
}
```