I have an array:
[0 => 'перший', 1 => 'другий', 2 => 'третій']
I need to get:
[0 => 'перший', 1 => 'другий', 2 => 'третій'],
[0 => 'перший', 2 = > 'третій', 1 => 'другий'],
[1 => 'другий, 0 => 'перший', 2 => 'третій'],
[1 => 'другий ', 2 = > 'третій, 0 => 'перший'],
[2 => 'третій', 0 => 'перший', 1 = > 'другий'],
[2 => 'третій', 1 => 'другий', 0 = > 'перший']
I wrote a function:
function permutations($inArray, &$returnArray = [], $inProcessedArray = [])
{
    if (count($inArray) === 1)
    {
        $returnArray[] = array_merge($inProcessedArray, $inArray);
    }
    else
    {
        foreach($inArray as $key => $value)
        {
            $copyArray = $inArray;
            unset($copyArray[$key]);
            permutations($copyArray, $returnArray, array_merge($inProcessedArray, [$key => $value]));
        }
    }
}
But this returns array elements permutations without preserving keys
Any suggestions? Thanks in advance
 
    