$columnCount, 'cumulativeCount' => $cumulativeCount ); $cumulativeCount *= $columnCount; } $arrayKeys = array_keys($anArray); $matrix = array_values($anArray); $columnCount = count($matrix); $validPermutationCount = 0; $permutations = array(); for ($currentPermutation = 0; $currentPermutation < $permutationCount; $currentPermutation++) { for ($currentColumnIndex = 0; $currentColumnIndex < $columnCount; $currentColumnIndex++) { $index = intval($currentPermutation / $matrixInfo[$currentColumnIndex]['cumulativeCount']) % $matrixInfo[$currentColumnIndex]['count']; $permutations[$currentPermutation][$currentColumnIndex] = $matrix[$currentColumnIndex][$index]; } $permutations[$currentPermutation] = array_combine($arrayKeys, $permutations[$currentPermutation]); if ($isValidCallback !== false) { if ($isValidCallback($currentPermutation, $permutations[$currentPermutation])) $validPermutationCount++; } else { $validPermutationCount++; } unset($permutations[$currentPermutation]); } if (!empty($permutations)) return $permutations; else return $validPermutationCount; } $arr = array( array(1, 2), array(3, 4), array(5, 6) ); permutationOfMultidimensionalArray($arr, function($permutationIndex, $permutationArray){ echo '
';
print_r($permutationArray);
});
?>