which() for each row!" /> OddEven Class - Snippet Logo
OddEven Class
Online Now: 0

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z Snippets Functions Classes

Home | PHP Resources | MySQL Zipbase | Forums

Snippet Code
Allows you to easily keep track of a series of items as either odd or even. Each time you check (using the "which" method) the counter increments so that the next time you check the state will have changed. This is the perfect class for using when you're outputting an HTML table and want to use different classes to differentiate between odd and even rows. Simply create a new instance and call OddEven->which() for each row!
/**
 * Allows you to easily keep track of rows of items as either odd or even.
 * Each time you check (using the "which" method) the counter increments so that
 * the next time you check the state will have changed.
 *
 * Jonathan Spalink
 * Dec. 2009
 */
class OddEven
{
    private $counter;
    private $odd;
    private $even;
    
    const ODD = "odd";
    const EVEN = "even";
    /**
     * Constructor method to create a new OddEven counter
     *
     * @param String $odd  The value to return when the counter is Odd
     * @param String $even The value to return when the counter is Even
     */
    public function __construct($odd=self::ODD, $even=self::EVEN)
    {
        $this->counter = 1;
        $this->odd = $odd;
        $this->even = $even;
    }

    /**
     * Increase the counter by 1 and return the old value
     *
     * @return Int The value of the counter before it is incremented
     */
    public function increment()
    {
        return $this->counter++;
    }

    /**
     * Resets the counter
     *
     * @param Int $initial The value at which to start the counter
     */
    public function reset($initial=1)
    {
        $this->counter = $initial;
    }

    /**
     * Runs an interation of the counter and returns whether its Odd or Even.
     * This also increments the counter by 1.
     *
     * @return String Odd or Even?
     */
    public function which()
    {
        $now = $this->increment();
        return ($now % 2 ? $this->odd : $this->even);
    }

    /**
     * Static invocation of the OddEven class to simply check a number without
     * futher complications.  If you don't pass in $odd or $even then the class
     * defaults are used.
     *
     * @param  int   $number The number to check
     * @param  mixed $odd    Value to return if number is odd
     * @param  mixed $even   Value to return if number is even
     * @return mixed $odd or $even
     */
    static public function OddOrEven($number, $odd=self::ODD, $even=self::EVEN)
    {
        return ($number % 2 ? $odd : $even);
    }

}
 
Snippet Comments

Add Your Comment

Dan
2010-04-23 00:00:00
function even_or_odd( $num ) { if( $num & 1 ) return "odd"; else return "even"; }

Add Your Comment

 
Snippet Tools
Rate this Snippet:

Rate the difficulty level:

Request Snippet Update


Suggested Difficulty Level: No votes yet.
Current Score: No votes yet

Total Views: 833

Other top snippets by spalink:

Search

Input key terms:
User Panel

User name:

Password:

Register And Post Your Own Snippets

Snippets On Watch

1.  Auth Class with (2.83 of 87)

2.  Test Please Delete (2.83 of 30)

3.  Return all repeated (3.64 of 72)

4.  Convert an integer (3.3 of 71)

5.  URL Shortening for (2.75 of 52)

6.  Monthly Content Sorting (3 of 45)

7.  Show String Trimmed (2.97 of 65)

8.  Human readable file (2.01 of 70)

9.  Randomize array values (2.8 of 82)

10.  Create a recursive (3.35 of 55)

New Snippets

1.  Parse RFC822 date (4 of 1)

2.  Dynamic Image Uploading (5 of 1)

3.  Spam Filter (0 of 0)

4.  Is Multiple (0 of 0)

5.  Base64 Encode / (0 of 0)

6.  URL Encode / (0 of 0)

7.  temp openbills (0 of 0)

8.  Php Iban Validator (0 of 0)

9.  Mysql Table Builder (0 of 0)

10.  File size of (1.75 of 4)

11.  Mail from your (1 of 1)

12.  OddEven Class (0 of 0)

13.  Detect if a (1 of 1)

14.  MB CopyMCF-DIR :: (5 of 1)

15.  Upper/Lower Case Accented (0 of 0)

16.  Zodiac Signs (3 of 1)

17.  Really useful code (2.5 of 2)

18.  Calculate Central European (0 of 0)

19.  Email Attachment (4 of 1)

20.  ImageMagick Image Upload (0 of 0)

21.  convert plain html (2 of 2)

22.  Tag Builder (3.25 of 4)

23.  Get Inserted ID (4.33 of 3)

24.  Watermark An Image (3.33 of 3)

25.  Check Prime Numbers (1.5 of 8)

Home | Forum | Free PHP Web Hosting | Contact | Terms & Conditions |  
Donate
PHPSnips.com - ©2010