<?xml version="1.0" encoding="utf-8" ?><rss version="2.0" xml:base="https://www.webmaster-forums.net/crss/node/1044294" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title></title>
    <link>https://www.webmaster-forums.net/crss/node/1044294</link>
    <description></description>
    <language>en</language>
          <item>
    <title>Here is what I finally came</title>
    <link>https://www.webmaster-forums.net/web-programming-and-application-development/programming-challengeget-array-variations#comment-1243152</link>
    <description> &lt;p&gt;Here is what I finally came up with that, trust me, is cleaner that than last nights code big time.&lt;/p&gt;
&lt;p&gt;&lt;div class=&quot;codeblock&quot;&gt;&lt;code&gt;// $aryMatrix = contains the data, and at this point already know there&lt;br /&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; there is at least one combination and less than 50 &lt;br /&gt;&lt;br /&gt;$intMaxVar = 1; // Will hold the maximum # of variations&lt;br /&gt;foreach($aryMatrix as $aryMatrixData) $intMaxVar *= count($aryMatrixData);&lt;br /&gt;&lt;br /&gt;$aryVariations = array_fill(0,$intMaxVar,array(array_fill(0,count($aryMatrix),0));&lt;br /&gt;$intSecOffset = $intMaxVar;&lt;br /&gt;for($iAtt=0; $iAtt&amp;lt;count($aryData); $iAtt++) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; $intAttValCount&amp;nbsp; = count($aryMatrix[$iAtt][&amp;#039;ValIDs&amp;#039;]);&lt;br /&gt;&amp;nbsp;&amp;nbsp; $intSets = $intSecOffset / $intAttValCount;&lt;br /&gt;&amp;nbsp;&amp;nbsp; for ($iAttVal=0; $iAttVal&amp;lt;$intAttValCount; $iAttVal++) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for ($iOffset=0; $iOffset&amp;lt;$intMaxVar; $iOffset+=$intSecOffset) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for ($iSetPos=0; $iSetPos&amp;lt;$intSets; $iSetPos++) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $aryVariations[$iAttVal*$intSets+$iOffset+$iSetPos][$iAtt] = $aryMatrix[$iAtt][&amp;#039;ValIDs&amp;#039;][$iAttVal];&lt;br /&gt;&amp;nbsp;&amp;nbsp; }&amp;nbsp; }&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp; $intSecOffset /= $intAttValCount;&lt;br /&gt;}&lt;/code&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Yeah, it loops through total combinations * # attributes, but I know I have a set # for both of these.&lt;/p&gt;
&lt;p&gt;Now, the next step I may tackle, here is how the data is originally, (which gets converted to the aryMatrix that I mentioned in my first post):&lt;/p&gt;
&lt;p&gt;&lt;div class=&quot;codeblock&quot;&gt;&lt;code&gt;$aryData = array( ATT_ID =&amp;gt; array( &amp;#039;Name&amp;#039;=&amp;gt; ATT_NAME, &amp;#039;Values&amp;#039;=&amp;gt; array(VAL_ID =&amp;gt; VAL_NAME)),&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ATT_ID =&amp;gt; array( &amp;#039;Name&amp;#039;=&amp;gt; ATT_NAME, &amp;#039;Values&amp;#039;=&amp;gt; array(VAL_ID =&amp;gt; VAL_NAME)),&lt;br /&gt;(etc)&lt;/code&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;I think I&#039;m good where I am at. Abhishek, I&#039;ll try out your code tomorrow, and do some resource checking/timing tests to see which route to take. I am very grateful for your post, as I just wet back through my entire history in firefox for today, and i cannot find the solution on the PHP documentation site! weird!&lt;/p&gt;
&lt;p&gt;-Greg&lt;/p&gt;
 </description>
     <pubDate>Thu, 02 Jul 2009 21:00:21 +0000</pubDate>
 <dc:creator>Greg K</dc:creator>
 <guid isPermaLink="false">comment 1243152 at https://www.webmaster-forums.net</guid>
  </item>
  <item>
    <title>teammatt3 wrote:
And, before</title>
    <link>https://www.webmaster-forums.net/web-programming-and-application-development/programming-challengeget-array-variations#comment-1243145</link>
    <description> &lt;p&gt;&lt;div class=&quot;quote-msg&quot;&gt;&lt;div class=&quot;quote-author&quot;&gt;&lt;em&gt;teammatt3&lt;/em&gt; wrote:&lt;/div&gt;And, before Abhishek Reddy has a chance to point it out, &lt;strong&gt;Python 2.6+&lt;/strong&gt; has a &lt;a href=&quot;http://stackoverflow.com/questions/533905/get-the-cartesian-product-of-a-series-of-lists-in-python&quot;&gt;method available to do it for you&lt;/a&gt; ;)&lt;/div&gt;&lt;br /&gt;
I would never!  I much prefer:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;(ns example (:use [clojure.contrib.combinatorics]))&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;div class=&quot;codeblock&quot;&gt;&lt;code&gt;(doseq [element (apply cartesian-product some-seqs)]&lt;br /&gt;&amp;nbsp; (println element))&lt;/code&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.webmaster-forums.net/misc/smileys/wink.png&quot; title=&quot;Wink&quot; alt=&quot;Wink&quot; class=&quot;smiley-content&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Here&#039;s a first pass at a more complete PHP version:&lt;/p&gt;
&lt;p&gt;&lt;div class=&quot;codeblock&quot;&gt;&lt;code&gt;&lt;span style=&quot;color: #000000&quot;&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;&amp;lt;?php&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;function &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;cartesian_product_appending &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$array1&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$array2&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;) {&lt;br /&gt;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$result &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;= array();&lt;br /&gt;&amp;nbsp; foreach (&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$array1 &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;as &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$a&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; foreach (&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$array2 &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;as &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$b&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$r &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;= &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$a&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;is_array&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$a&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;array_push&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$r&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$b&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$r &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;= array(&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$a&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$b&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;array_push&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$result&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$r&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp; }&lt;br /&gt;&amp;nbsp; return &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$result&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;function &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;cartesian_product_of_arrays &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$arrays&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;) {&lt;br /&gt;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$result &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;= &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;array_shift&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$arrays&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;);&lt;br /&gt;&amp;nbsp; foreach (&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$arrays &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;as &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$array&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$result &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;= &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;cartesian_product_appending&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$result&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$array&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;);&lt;br /&gt;&amp;nbsp; }&lt;br /&gt;&amp;nbsp; return &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$result&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$aryData &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;= array(&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;=&amp;gt;array(&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;11&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;12&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;13&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;),&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;3&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;=&amp;gt;array(&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;21&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;22&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;23&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;),&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;4&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;=&amp;gt;array(&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;31&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;32&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;));&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;print_r&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;cartesian_product_of_arrays&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$aryData&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;));&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;?&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;&lt;/p&gt;
 </description>
     <pubDate>Thu, 02 Jul 2009 19:05:00 +0000</pubDate>
 <dc:creator>Abhishek Reddy</dc:creator>
 <guid isPermaLink="false">comment 1243145 at https://www.webmaster-forums.net</guid>
  </item>
  <item>
    <title>Ok, now that I know what to</title>
    <link>https://www.webmaster-forums.net/web-programming-and-application-development/programming-challengeget-array-variations#comment-1243143</link>
    <description> &lt;p&gt;Ok, now that I know what to look for, there is an example function right in the comments on php.net to do it. I&#039;ll have to adapt it a bit, but should work.&lt;/p&gt;
&lt;p&gt;-Greg&lt;/p&gt;
 </description>
     <pubDate>Thu, 02 Jul 2009 17:42:20 +0000</pubDate>
 <dc:creator>Greg K</dc:creator>
 <guid isPermaLink="false">comment 1243143 at https://www.webmaster-forums.net</guid>
  </item>
  <item>
    <title>THANK YOU! I knew there had</title>
    <link>https://www.webmaster-forums.net/web-programming-and-application-development/programming-challengeget-array-variations#comment-1243137</link>
    <description> &lt;p&gt;THANK YOU! I knew there had to be a name for it. now I can google it better! (or bing it better...)&lt;/p&gt;
&lt;p&gt;I&#039;m about to dive into cleaning up the mess of code I have to make it, will post the final version here (or a link to a function that will do the same for me)&lt;/p&gt;
&lt;p&gt;For the gist of the DB:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;tblAttribute&lt;/strong&gt;&lt;br /&gt;
AttributeID&lt;br /&gt;
AttributeName&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;tblAttributeValue&lt;/strong&gt;&lt;br /&gt;
AttributeValueID&lt;br /&gt;
AttriuteID &lt;em&gt;- FK back to tblAttribute&lt;/em&gt;&lt;br /&gt;
AttributeValue&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;tblProductAttVal&lt;/strong&gt;&lt;br /&gt;
ProductAttValID&lt;br /&gt;
AttributeValueID &lt;em&gt;- FK back to tblAttributeValue&lt;/em&gt;&lt;br /&gt;
Available &lt;em&gt;- Basically if set, this value is available on this product&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;note there are other values in use, and there are needs that require it broken down this way out of the scope of my needs here, but this is the gist of the table/fields that affect my challenge.&lt;/p&gt;
&lt;p&gt;-Greg&lt;/p&gt;
 </description>
     <pubDate>Thu, 02 Jul 2009 15:18:00 +0000</pubDate>
 <dc:creator>Greg K</dc:creator>
 <guid isPermaLink="false">comment 1243137 at https://www.webmaster-forums.net</guid>
  </item>
  <item>
    <title>That&#039;s a Cartesian product.</title>
    <link>https://www.webmaster-forums.net/web-programming-and-application-development/programming-challengeget-array-variations#comment-1243126</link>
    <description> &lt;p&gt;That&#039;s a Cartesian product. You might be able to solve the problem with SQL. &lt;/p&gt;
&lt;p&gt;{11,12,13} * {21,22,23} * {31,32} = {(11,21,31), (11, 21, 32), (11, 22, 31), (11, 22, 32)} etc. I had to do this by hand for my discrete math class. It look forever. &lt;/p&gt;
&lt;p&gt;What does your DB schema look like?&lt;/p&gt;
&lt;p&gt;And, before Abhishek Reddy has a chance to point it out, &lt;strong&gt;Python 2.6+&lt;/strong&gt; has a &lt;a href=&quot;http://stackoverflow.com/questions/533905/get-the-cartesian-product-of-a-series-of-lists-in-python&quot;&gt;method available to do it for you&lt;/a&gt; &lt;img src=&quot;https://www.webmaster-forums.net/misc/smileys/wink.png&quot; title=&quot;Wink&quot; alt=&quot;Wink&quot; class=&quot;smiley-content&quot; /&gt;&lt;/p&gt;
 </description>
     <pubDate>Thu, 02 Jul 2009 03:34:00 +0000</pubDate>
 <dc:creator>teammatt3</dc:creator>
 <guid isPermaLink="false">comment 1243126 at https://www.webmaster-forums.net</guid>
  </item>
  </channel>
</rss>
