6.8 Array and Object Property Iteration

 <  Day Day Up  >  

In PHP you can iterate through all the elements in an array using foreach . Although other methods are available, this is the preferred syntax for looping though results:

 $person = array('firstname' => 'Rasmus',                 'lastname'  => 'Lerdorf'); foreach ($person as $key => $value) {     print "$key: $value\n"; }  firstname: Rasmus   lastname: Lerdorf  

You can also use foreach to view an object's properties:

 class Person {     // hardcode values for demonstration     public $firstname = 'Rasmus';     public $lastname  = 'Lerdorf'; } $person = new Person; foreach ($person as $property => $value) {     print "$property: $value\n"; }  firstname: Rasmus   lastname: Lerdorf  

In PHP 5, if an object property cannot be accessed because it is set as protected or private , then it will be skipped during iteration.

For example, update Person to include a private email attribute:

 class Person {     // hardcode values for demonstration     public  $firstname = 'Rasmus';     public  $lastname  = 'Lerdorf';     private $email     = 'rasmus@php.net'; } $person = new Person; foreach ($person as $property => $value) {     print "$property: $value\n"; }  firstname: Rasmus   lastname: Lerdorf  

The email property is not printed, because you cannot access it from outside the class, but the results are different when you do a foreach inside the class. For instance, add a method named printInfo( ) :

 class Person {     // hardcode values for demonstration     public  $firstname = 'Rasmus';     public  $lastname  = 'Lerdorf';     private $email     = 'rasmus@php.net';     public function printInfo( ) {         foreach ($this as $property => $value) {             print "$property: $value\n";         }          } } $person = new Person; $person->printInfo( );  firstname: Rasmus   lastname: Lerdorf   email: rasmus@php.net  

While the code inside printInfo( ) is the same as the foreach outside the class (except that you refer to the object as $this instead of $person ), the first loop cannot see the private email property, because it is restricted from public access. Class methods, however, are able to view all three properties, so email is printed.

 <  Day Day Up  >  


Upgrading to PHP 5
Upgrading to PHP 5
ISBN: 0596006365
EAN: 2147483647
Year: 2004
Pages: 144

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net