<?php
class Foo
{
    public function combinations(array $values): array
    {
        $combinations = [];
        foreach ($values as $value1) {
            foreach ($values as $value2) {
                if ($value1 == $value2) {
                    continue;
                }
                $pair = [$value1, $value2];
                sort($pair);
                $key = sprintf('%s::%s', $pair[0], $pair[1]);
                if (!array_key_exists($key, $combinations)) {
                        $combinations[$key] = $pair;
                }
            }
        }
        return array_values($combinations);
    }
}

$foo = new Foo();
print_r($foo->combinations(['a', 'b', 'c', 'd']));