Version: 1.0
Type: Function
Category: HTML
License: GNU General Public License
Description: Alternate row colors in rows in a table. Includes three separate versions of the function to demonstrate multiple ways to achieve same effect.
<?php /********************************************************************* * alternate_row_colors.php * * Author: Steve Werby <steve at(@) befriend dot(.) com> * Created: 2001-04-17 15:55 * Revised: 2001-04-17 16:20 * * Purpose: Alternate row colors in rows in a table. * * Latest version always available at http://www.befriend.com/. *********************************************************************/ // The following functions allow you to alternate background colors // of table rows. They can easily be edited to alter rows and other // output in other ways instead. They can also be rewritten such // that the code isn't within a function; however the code will have // to be within some kind of control structure. /********************************************************************* * alternate_rows(). *********************************************************************/ // This version works, but is not as elegant as the second version // which makes use of the % (modulus) operator and allows for // more than 2 colors to alternate between. function alternate_rows( // color_1 and color_2 have default values, but can be over-ridden. $data, $color_1 = 'aqua', $color_2 = 'yellow' ) { // Declare $color as static so it retains its value when program // execution leaves the local function's scope. static $color; // Set the color to that's not currently set. if ( $color == $color_1 ) { $color = $color_2; } else { $color = $color_1; } echo '<tr bgcolor="' . $color . '"><td>' . $data . '</td></tr>'; } /********************************************************************* * alternate_rows_2(). *********************************************************************/ // This version is a little more elegant. It makes use of // the % (modulus) operator and allows for more than 2 colors to // alternate between. function alternate_rows_2( $data, $colors = array( 'aqua', 'yellow', 'green' ) ) { // Declare $color as static so it retains its value when program // execution leaves the local function's scope. static $row_count = 0; $row_count++; if ( $row_count % 3 == 1 ) { $color = $colors[0]; } else if ( $row_count % 3 == 2 ) { $color = $colors[1]; } else { $color = $colors[2]; } echo '<tr bgcolor="' . $color . '"><td>' . $data . '</td></tr>'; } /********************************************************************* * alternate_rows_3(). *********************************************************************/ // This version is a even more elegant. It makes use of // the % (modulus) operator and allows for more than 2 colors to // alternate between. And it counts the number of colors passed as // argument within the function in order to allow the code to be // used without editing for an infinite number of colors. function alternate_rows_3( $data, $colors = array( 'aqua', 'yellow', 'green', 'orange' ) ) { // Declare $color as static so it retains its value when program // execution leaves the local function's scope. static $row_count = 0; $row_count++; // Calculate the number of colors passed to the function. $color_count = count( $colors ); for ( $i = 0; $i <= $color_count -1; $i++ ) { if ( ( $row_count - 1 ) % $color_count == $i ) { $color = $colors[$i]; } } echo '<tr bgcolor="' . $color . '"><td>' . $data . '</td></tr>'; } /********************************************************************* * Usage of alternate_rows(). *********************************************************************/ echo '<table border="0" cellpadding="0" cellspacing="0">'; for ( $i = 1; $i <= 10; $i++ ) { $data = $i; alternate_rows( $data ); } echo '</table>'; /********************************************************************* * Usage of alternate_rows_2(). *********************************************************************/ echo '<br>'; echo '<table border="0" cellpadding="0" cellspacing="0">'; for ( $i = 1; $i <= 10; $i++ ) { $data = $i; alternate_rows_2( $data ); } echo '</table>'; /********************************************************************* * Usage of alternate_rows_3(). *********************************************************************/ echo '<br>'; echo '<table border="0" cellpadding="0" cellspacing="0">'; for ( $i = 1; $i <= 10; $i++ ) { $data = $i; alternate_rows_3( $data ); } echo '</table>'; ?>