O'Reilly logo

Upgrading to PHP 5 by Adam Trachtenberg

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Array and Object Property Iteration

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

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required