given: $num_cols and $num_items $num_with_extra = $num_items % $num_cols; $num_per_col = floor($num_items / $num_cols);
the first $num_with_extra columns has $num_per_col+1 items in it and the rest have $num_per_col items in it (not tested in code, but looks okay in theory...) Martin > -----Original Message----- > From: Matt Grimm [mailto:[EMAIL PROTECTED] > Sent: Thursday, 8 January 2004 9:37 AM > To: [EMAIL PROTECTED] > Subject: [PHP] Re: Sorting data into columns vertically > > > Well you didn't say you wanted a dynamic number of columns... > > What's the problem with the solution 102, 101, 101? That's > the count of the > elements in each column -- you said in a 7 member array, you > wanted 3 items > in the first column, and two in the other two columns. > That's 3, 2, 2, > which the code will give you. If you want, echo the other > variables and it > will make more sense. > > -- > Matt Grimm > > > "Dareal Hamsta" <[EMAIL PROTECTED]> wrote in message > news:[EMAIL PROTECTED] > > I get: > > > > Your columns are: 102, 101, 101 > > > > ??? > > > > The other problem with this solution is that it's for a > static number of > > columns, however I'm looking for a solution with dynamic > variables. For > > example, I might want 4 columns with 100 items, or six > columns with 15. > > > > Thanks for trying though. > > > > adam > > > > > > >From: Matt Grimm <[EMAIL PROTECTED]> > > >To: [EMAIL PROTECTED] > > >Subject: Re: Sorting data into columns vertically > > >Date: Wed, 07 Jan 2004 11:39:48 -0900 > > > > > >Try this: > > > > > >// Populate an array of random length > > >for ($i = 0; $i < rand(300, 600); $i++) { > > > $l_aTest[] = '...'; > > >} > > >$l_iLength = count($l_aTest); > > >$l_iLow = floor($l_iLength / 3); > > >$l_iHigh = ceil($l_iLength / 3); > > >$l_iMod = $l_iLength % 3; > > > > > >$l_iFirst = $l_iHigh; > > >$l_iSecond = ($l_iMod < 2 ? $l_iHigh - $l_iMod : $l_iHigh); > > >$l_iThird = $l_iLow; > > > > > >echo "<p><strong>Your columns are: $l_iFirst, $l_iSecond, > > >$l_iThird</strong></p>"; > > > > > >-- > > >Matt Grimm > > >Web Developer > > >The Health TV Channel, Inc. > > >(a non - profit organization) > > >3820 Lake Otis Parkway > > >Anchorage, AK 99508 > > >907.770.6200 ext. 686 > > >907.336.6205 (fax) > > >E-mail: [EMAIL PROTECTED] > > >Web: www.healthtvchannel.org > > > > > > > > >"Dareal Hamsta" <[EMAIL PROTECTED]> wrote in message > > >news:[EMAIL PROTECTED] > > > > [ Please copy me off list. ] > > > > > > > > Say I have 7 items of data and I wish to sort them into > 3 columns in a > > >HTML > > > > table. The items are unevenly sized, so rather than > print them out in > > >rows - > > > > resulting in lots of wasteful whitespace - I would like > to output them > > >in > > > > vertical order. However if I use the modulus operator > to check for > when > > >to > > > > break into a new column... > > > > > > > > foreach ($items as $item) { > > > > $counter++; > > > > if ( ($counter % $columns) == 0) { > > > > print "</td><td>"; > > > > } > > > > } > > > > > > > > ...the output will be something like this... > > > > > > > > +-------+-------+-------+ > > > > | Item1 | Item4 | Item7 | > > > > | Item2 | Item5 | | > > > > | Item3 | Item6 | | > > > > +-----------------------+ > > > > > > > > ...when what I'm really looking for is this... > > > > > > > > +-------+-------+-------+ > > > > | Item1 | Item4 | Item6 | > > > > | Item2 | Item5 | Item7 | > > > > | Item3 | | | > > > > +-----------------------+ > > > > > > > > Obviously if the number of items and columns are > static, I have no > > >problem, > > > > but how do I get a layout that appeals to people and > not computers if > > > > they're dynamic? This has me befuddled, I'm wondering > is there an > > >algorithm > > > > for doing it or is it effectively a Turing Test. > > > > > > > > Thanks, > > > > adam > > > > > > > > > > > > <?php > > > > $s=array(74,65,112,104,112,72,32,59,45,41); > > > > for($i=0;$i<count($s);$i++){echo'&#'.$s[$i].';';} > > > > ?> > > > > > > > > > _________________________________________________________________ > > > > MSN 8 with e-mail virus protection service: 2 months FREE* > > > > http://join.msn.com/?page=features/virus > > > > > > > > > > > > > _________________________________________________________________ > > Add photos to your messages with MSN 8. Get 2 months FREE*. > > http://join.msn.com/?page=features/featuredemail > > -- > PHP General Mailing List (http://www.php.net/) > To unsubscribe, visit: http://www.php.net/unsub.php > __________ Information from NOD32 1.594 (20040107) __________ > > This message was checked by NOD32 for Exchange e-mail monitor. > http://www.nod32.com > > > > -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php