On Mon, 2003-10-27 at 12:44, Aaron Gould wrote:
> This array problem has been stumping my brain for a little while now...
> here's a sample of my data:
>
> $purchases[001][200304] = array('regular'=>3, 'booked'=>4);
> $purchases[002][200303] = array('regular'=>5, 'booked'=>1);
> $purchases[002][200304] = array('regular'=>1, 'booked'=>0);
> $purchases[002][200307] = array('regular'=>0, 'booked'=>2);
> $purchases[003][200303] = array('regular'=>0, 'booked'=>4);
> $purchases[003][200301] = array('regular'=>5, 'booked'=>0);
> $purchases[004][200309] = array('regular'=>0, 'booked'=>2);
>
> The first array element of $purchases is a Part Number (or "SKU"). The
> second element of $purchases is the month/year for which the assigned data
> ("regular" and "booked" values) are set.
>
> I need to take this data and place it into a table that has a row for each
> part number, and 12 months worth of cells. An example of the desired chart
> (apologies to the
> non-fixed font viewers!):
>
> SKU| Jan | Feb | Mar | Apr | May | Jun | Jul | Aug | Sep | Oct | Nov | Dec
> ---+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+----
> 001| | | | 3/4 | | | | | | | |
> ---+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+----
> 002| | | 5/1 | 1/0 | | | 0/2 | | | | |
> ---+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+----
> 003| 5/0 | | 0/4 | | | | | | | | |
> ---+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+----
> 004| | | | | | | | | 0/2 | | |
>
> In this case, the table layout would be 4 rows and 12 cells.
>
> In this sample data's case, there are three rows of Part Number "002". This
> needs to be combined into one row. There will only be a maximum of
> 12 elements for each SKU (there will never be duplicated Month/Year values).
>
> Can anyone lead me in the right direction?
I was feeling generous so I whipped up the answer for you :)
<?php
$purchases[001][200304] = array('regular'=>3, 'booked'=>4);
$purchases[002][200303] = array('regular'=>5, 'booked'=>1);
$purchases[002][200304] = array('regular'=>1, 'booked'=>0);
$purchases[002][200307] = array('regular'=>0, 'booked'=>2);
$purchases[003][200303] = array('regular'=>0, 'booked'=>4);
$purchases[003][200301] = array('regular'=>5, 'booked'=>0);
$purchases[004][200309] = array('regular'=>0, 'booked'=>2);
echo '<table border="1">'."\n"
.'<tr>'
.'<th>SKU</th>'
.'<th>Jan</th>'
.'<th>Feb</th>'
.'<th>Mar</th>'
.'<th>Apr</th>'
.'<th>May</th>'
.'<th>Jun</th>'
.'<th>Jul</th>'
.'<th>Aug</th>'
.'<th>Sep</th>'
.'<th>Oct</th>'
.'<th>Nob</th>'
.'<th>Dec</th>'
.'</tr>'."\n";
foreach( $purchases as $sku => $skuData )
{
echo '<tr>'
.'<td>'.sprintf( '%03d', $sku ).'</td>';
for( $i = 1; $i <= 12; $i++ )
{
$key = '2003'.sprintf( '%02d', $i );
echo '<td>';
if( isset( $skuData[$key] ) )
{
echo $skuData[$key]['regular'].'/'.$skuData[$key]['booked'];
}
else
{
echo ' ';
}
echo '</td>';
}
echo '</tr>'."\n";
}
echo '</table>'."\n";
Cheers,
Rob.
--
.------------------------------------------------------------.
| InterJinn Application Framework - http://www.interjinn.com |
:------------------------------------------------------------:
| An application and templating framework for PHP. Boasting |
| a powerful, scalable system for accessing system services |
| such as forms, properties, sessions, and caches. InterJinn |
| also provides an extremely flexible architecture for |
| creating re-usable components quickly and easily. |
`------------------------------------------------------------'
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php