PHP and iterators…
Violin and boxing…
Anyway, it is possible and the possibility is since some years ago.
In this article I will simply show how to make an iterator with a PHP class. And I would iterate in a table, with different background colors per row. And that is it!
In order to make an iterator with Php class, we need to define 5 functions in the class:
- current()
- key()
- next()
- rewind()
- valid()
Once this is done, the iterator is ready :). And we may access it with the help of a foreach array.
Here comes the code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
<? class TopGames implements Iterator{ public $price; public $game_collection = array(); private $counter; public function current(){ return $this->game_collection[$this->counter]; } public function key(){ return $this->counter; } public function next(){ $this->counter++; } public function rewind(){ $this->counter = 1; } public function valid(){ return isset($this->game_collection[$this->counter]); } } $my_games = new TopGames; $my_games->price = 100; $my_games->game_collection = array("WC3 TFT", "AOE2", "Collin McRea Rally 2","Soldier of Fortune","Fifa 2001","Zanzarah - the hidden portal Demo"); $my_str = "<table border = 7 >"; $my_str .= "<tr><td>#</td><td>Price</td><td>Name</td></tr>"; foreach ($my_games as $pc_game => $interesting_game){ $my_str .= "<tr><td bgcolor = #ABCCAA>$pc_game </font></td><td bgcolor = #FAFACC>".round_up($my_games->price,3)." €</td><td bgcolor = #AACACE>$interesting_game</td></tr>"; $my_games->price *= 1.35; } function round_up($number, $precision = 2){ $fig = (int) str_pad('1', $precision, '0'); return (ceil($number * $fig) / $fig); } $my_str .="</table>"; echo $my_str; ?> |
Use responsibly. In Github.
🙂