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