From ed77ecccdc145f2f68cbc265c3c56be65f9ebbc7 Mon Sep 17 00:00:00 2001 From: Curt Zirzow Date: Fri, 23 Jul 2004 20:06:04 +0000 Subject: [PATCH] New iteration documentation. git-svn-id: https://svn.php.net/repository/phpdoc/en/trunk@164130 c90b9560-bf6c-de11-be94-00142212c4b1 --- language/oop5/iterations.xml | 208 ++++++++++++++++++++++++++++++++++- 1 file changed, 206 insertions(+), 2 deletions(-) diff --git a/language/oop5/iterations.xml b/language/oop5/iterations.xml index dae212a29c..abb47c3e58 100644 --- a/language/oop5/iterations.xml +++ b/language/oop5/iterations.xml @@ -1,12 +1,216 @@ - + Object Iteration - . + PHP 5 provides a way for objects to to be defined so it is possible + to iterate through a list of items, with, for example a statement. By default, all + public properties will be used for the iteration. + + Simple Object Iteration + + $value) { + print "$key => $value\n"; +} +]]> + + + Will output: + + + value 1 +var2 => value 2 +var3 => value 3 +]]> + + + + + + As the output shows, the + iterated through each public variable that is defined. To take it + a step further you can implement one of PHP 5's + internal named + Iterator. This allows the object to decide what + and how the object will be iterated. + + + + Object Iteration implenting Iterator + +var = $array; + } + } + + public function rewind() { + echo "rewinding\n"; + reset($this->var); + } + + public function current() { + $var = current($this->var); + echo "current: $var\n"; + return $var; + } + + public function key() { + $var = key($this->var); + echo "key: $var\n"; + return $var; + } + + public function next() { + $var = next($this->var); + echo "next: $var\n"; + return $var; + } + + public function valid() { + $var = $this->current() !== false; + echo "valid: {$var}\n"; + return $var; + } + +} + +$values = array(1,2,3); +$it = new MyIterator($values); + +foreach ($it as $a => $b) { + print "$a: $b\n"; +} +]]> + + + Will output: + + + + + + + + + You can also define your class so that it doesn't have to define + all the Iterator functions by simply implementing + the PHP 5 IteratorAggregate interface. + + + + Object Iteration implenting IteratorAggregate + +items); + } + + public function add($value) { + $this->items[$this->count++] = $value; + } + +} + +$coll = new MyCollection(); +$coll->add('value 1'); +$coll->add('value 2'); +$coll->add('value 3'); + +foreach ($coll as $key => $val) { + echo "key/value: [$key -> $val]\n\n"; +} + +?> + +]]> + + + Will output: + + + value 1] + +next: value 2 +current: value 2 +valid: 1 +current: value 2 +key: 1 +key/value: [1 -> value 2] + +next: value 3 +current: value 3 +valid: 1 +current: value 3 +key: 2 +key/value: [2 -> value 3] + +next: +current: +valid: +]]> + + +