Kohone
8/7/2016 - 2:23 PM

все варианты перестановок массива

все варианты перестановок массива

private function permutations($input)
    {
        if (count($input) <= 1) return array($input);
        $result = array();
        foreach ($input as $v) {
            $reduce = array_filter($input,
                function ($e) use ($v) {
                    return $e !== $v;
                }
            );
            $result = array_merge($result,
                array_map(
                    function ($e) use ($v) {
                        array_unshift($e, $v);
                        return $e;
                    },
                    $this->permutations($reduce)
                )
            );
        }
        return $result;
    }