I have a quite specific problem. I want to combine every element of an array with neighboring elements to a new array of minimum length 2. Im not sure if Im explaining that correctly so here’s an example:
Given the array:
JavaScript
x
$array = ['a', 'b', 'c', 'd'];
I want to create a new array that looks like this:
JavaScript
[
['ab', 'c', 'd'],
['ab', 'cd'],
['abc', 'd'],
['a', 'bc', 'd'],
['a', 'bcd'],
['a', 'b', 'cd']
]
[‘abcd’] is not returned since it is only of length 1.
Advertisement
Answer
I thought I would post an answer since I got it working with help from others.
JavaScript
function permutations($array, $i)
{
if($i >= count($array) - 1)
{
return array($array);
}
$newArray = $array;
$newArray[$i] .= $newArray[$i + 1];
unset($newArray[$i+1]);
$newArray = array_values($newArray);
$a = permutations($newArray, $i );
$b = permutations( $array, $i + 1);
return array_merge($a, $b);
}
//$array = ['a', 'b', 'c', 'd'];
//print_r(permutations($array, 0));