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>';
?>