Created
April 22, 2014 20:30
-
-
Save jwage/11193216 to your computer and use it in GitHub Desktop.
PHP Cartesian Function
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
$attributeValues = array( | |
'color' => array('Red', 'White', 'Blue'), | |
'size' => array(1, 2, 3, 4), | |
'fabric' => array('Cloth', 'Silk') | |
); | |
class Cartesian | |
{ | |
public static function build($set) | |
{ | |
if (!$set) { | |
return array(array()); | |
} | |
$subset = array_shift($set); | |
$cartesianSubset = self::build($set); | |
$result = array(); | |
foreach ($subset as $value) { | |
foreach ($cartesianSubset as $p) { | |
array_unshift($p, $value); | |
$result[] = $p; | |
} | |
} | |
return $result; | |
} | |
} | |
print_r(Cartesian::build($attributeValues)); |
Here's pretty interesting implementation https://github.com/PatchRanger/cartesian-iterator
Amazing. Thanks a Ton
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
btw @jwage
nice one.