Re: Sorting data into columns vertically
| From: | dareal hamsta | Date: | Wed, 07 Jan 2004 21:56:57 +0000 |
| Subject: | Re: Sorting data into columns vertically | ||
| Groups: | php.general | ||
| Request: | Send a blank email to php-general+get-174011@lists.php.net to get a copy of this message | ||
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++) {_________________________________________________________________ Add photos to your messages with MSN 8. Get 2 months FREE*. http://join.msn.com/?page=features/featuredemail$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