Re: Sorting data into columns vertically

From: Date: Wed, 07 Jan 2004 22:37:06 +0000
Subject: Re: Sorting data into columns vertically
References: 1  Groups: php.general 
Request: Send a blank email to php-general+get-174014@lists.php.net to get a copy of this message
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" <darealhamsta@hotmail.com> wrote in message news:Law15-F29l1q4gtopWd0001e875@hotmail.com... > 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 <mgrimm@healthtvchannel.org> > >To: darealhamsta@hotmail.com > >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: mgrimm@healthtvchannel.org > >Web: www.healthtvchannel.org > > > > > >"Dareal Hamsta" <darealhamsta@hotmail.com> wrote in message > >news:Law15-F786Tudbep7Wx0001db45@hotmail.com... > > > [ 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

« previous php.general (#174014) next »